Suche senden
Hochladen
Consistent hash
•
24 gefällt mir
•
12,768 views
paulowniaceae
Folgen
(in japanese)コンシステントハッシュ法の簡単な説明でうす。ネットでググって出てくる以上の内容はありません
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 32
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
Empfohlen
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Google Cloud Platform - Japan
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
NTT DATA Technology & Innovation
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Weitere ähnliche Inhalte
Was ist angesagt?
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Amazon Web Services Japan
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
NTT DATA Technology & Innovation
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Was ist angesagt?
(20)
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Redisの特徴と活用方法について
Redisの特徴と活用方法について
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
分散システムについて語らせてくれ
分散システムについて語らせてくれ
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Consistent hash
1.
@nullpon / id:paulownia コンシステント ハッシュ法 consistent
hashing
2.
コンシステントハッシュ法 分散データベース/キャッシュの保存先を決定 するために開発されたハッシュテーブルのアル ゴリズム
3.
コンシステントハッシュ のアルゴリズム
4.
適当なハッシュ関数を用意 出力値が大小比較可能なハッシュ関数を用意 ※ ここでは、入力値を0から127までの値に変換 する仮想のハッシュ関数 h
で説明する
5.
ノードのIDをハッシュ関数 h で変換 n1:
h("n1") => 25 n2: h("n2") => 120 n3: h("n3") => 50 n4: h("n4") => 95
6.
リング状に配置
7.
データのIDをハッシュ関数 h で変換 a1:
h("a1") => 64 a2: h("a2") => 115 a3: h("a3") => 75 a4: h("a4") => 8 a5: h("a5") => 100 a6: h("a6") => 90 a7: h("a7") => 45 a8: h("a8") => 15
8.
リング状に配置
9.
データの割り当て先ノードは以下の順に決定 データIDのハッシュ値と同じノード データIDより大きいハッシュ値を持つノード のなかで、ハッシュ値が最小のノード ハッシュ値が最小のノード
10.
ノードの追加と削除
11.
ノードの追加
12.
13.
n4のデータの一部がn5へ移動
14.
ノードの削除
15.
16.
n1のデータがn3へ移動
17.
移動するデータ数の平均値 データ数/ノード数
18.
仮想ノード
19.
仮想ノードなしでは、負荷分散が不完全
20.
偏ったリング データが特定のノードに偏り 負荷分散にならない
21.
ノードがダウン 落ちたノードの全データが一つ先のノードへ 移動 一つ先のノードの負荷が2倍 特定のノードに負荷が集中
22.
ノードを追加 1つ先のノードからデータが移動 1つ先のノードの負荷しか減らない 負荷対策にならない
23.
そこで仮想ノード
24.
n1: h("n1"+0) =>
25 n1: h("n1"+1) => 100 n1: h("n1"+2) => 90 n2: h("n2"+0) => 120 n2: h("n2"+1) => 45 n2: h("n2"+2) => 13 … ハッシュ関数 h でノードID+αを変換
25.
リング状に配置 ノード数が増えれば均等に分散する確率が高くなる
26.
ノード4が追加された場合 複数のノードから均等にデータが 移動してくる可能性が高い
27.
ノード1がダウンした場合 ノード1のデータが複数のノードへ 均等に分散することが期待できる
28.
メリット・デメリット
29.
メリット データの割り当て先を自動で決定可能 データをクラスタに均等に分散できる ノードが落ちた時、自動で再割り当て 再割り当てのコストが小さい
30.
デメリット 全てのノードが現在のクラスタの状態を正確に 知ってなければならない。 クラスタ状態の共有コストがかかる
31.
まとめ
32.
コンシステントハッシュを用いると プロセスが1つ2つ程度落ちても問題のない クラスタを構成できる 負荷分散についてエンジニアが手を動かす 必要がない 大規模な分散環境でも運用が楽 (かもしれない)
Jetzt herunterladen