Soumettre la recherche
Mettre en ligne
Consistent hash
•
24 j'aime
•
12,773 vues
paulowniaceae
Suivre
(in japanese)コンシステントハッシュ法の簡単な説明でうす。ネットでググって出てくる以上の内容はありません
Lire moins
Lire la suite
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 32
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
Recommandé
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
例外設計における大罪
例外設計における大罪
Takuto Wada
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Yahoo!デベロッパーネットワーク
nginx入門
nginx入門
Takashi Takizawa
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
Contenu connexe
Tendances
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
例外設計における大罪
例外設計における大罪
Takuto Wada
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Yahoo!デベロッパーネットワーク
nginx入門
nginx入門
Takashi Takizawa
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
Masatoshi Tada
Tendances
(20)
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
TLS, HTTP/2演習
TLS, HTTP/2演習
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
例外設計における大罪
例外設計における大罪
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
DockerとPodmanの比較
DockerとPodmanの比較
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
nginx入門
nginx入門
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
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つ程度落ちても問題のない クラスタを構成できる 負荷分散についてエンジニアが手を動かす 必要がない 大規模な分散環境でも運用が楽 (かもしれない)
Télécharger maintenant