[フレーム]
PDF, PPTX12,924 views

Consistent hash

(in japanese)コンシステントハッシュ法の簡単な説明でうす。ネットでググって出てくる以上の内容はありません

Download as PDF, PPTX
@nullpon / id:paulownia コンシステント ハッシュ法 consistent hashing
コンシステントハッシュ法 分散データベース/キャッシュの保存先を決定 するために開発されたハッシュテーブルのアル ゴリズム
コンシステントハッシュ のアルゴリズム
適当なハッシュ関数を用意 出力値が大小比較可能なハッシュ関数を用意 (注記) ここでは、入力値を0から127までの値に変換 する仮想のハッシュ関数 h で説明する
ノードのIDをハッシュ関数 h で変換 n1: h("n1") => 25 n2: h("n2") => 120 n3: h("n3") => 50 n4: h("n4") => 95
リング状に配置
データの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
リング状に配置
データの割り当て先ノードは以下の順に決定 データIDのハッシュ値と同じノード データIDより大きいハッシュ値を持つノード のなかで、ハッシュ値が最小のノード ハッシュ値が最小のノード
ノードの追加と削除
ノードの追加
n4のデータの一部がn5へ移動
ノードの削除
n1のデータがn3へ移動
移動するデータ数の平均値 データ数/ノード数
仮想ノード
仮想ノードなしでは、負荷分散が不完全
偏ったリング データが特定のノードに偏り 負荷分散にならない
ノードがダウン 落ちたノードの全データが一つ先のノードへ 移動 一つ先のノードの負荷が2倍 特定のノードに負荷が集中
ノードを追加 1つ先のノードからデータが移動 1つ先のノードの負荷しか減らない 負荷対策にならない
そこで仮想ノード
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+αを変換
リング状に配置 ノード数が増えれば均等に分散する確率が高くなる
ノード4が追加された場合 複数のノードから均等にデータが 移動してくる可能性が高い
ノード1がダウンした場合 ノード1のデータが複数のノードへ 均等に分散することが期待できる
メリット・デメリット
メリット データの割り当て先を自動で決定可能 データをクラスタに均等に分散できる ノードが落ちた時、自動で再割り当て 再割り当てのコストが小さい
デメリット 全てのノードが現在のクラスタの状態を正確に 知ってなければならない。 クラスタ状態の共有コストがかかる
まとめ
コンシステントハッシュを用いると プロセスが1つ2つ程度落ちても問題のない クラスタを構成できる 負荷分散についてエンジニアが手を動かす 必要がない 大規模な分散環境でも運用が楽 (かもしれない)

More Related Content

Raft
PPT
分散システムについて語らせてくれ
PPTX
分散システムについて語らせてくれ
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Redisの特徴と活用方法について
PPTX
Redisの特徴と活用方法について
ビッグデータ処理データベースの全体像と使い分け
2018年version
PPTX
ビッグデータ処理データベースの全体像と使い分け
2018年version
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
MongoDBが遅いときの切り分け方法
PPTX
MongoDBが遅いときの切り分け方法
iostat await svctm の 見かた、考え方
PPTX
iostat await svctm の 見かた、考え方
Raft
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Redisの特徴と活用方法について
Redisの特徴と活用方法について
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方

What's hot

インフラエンジニアのためのcassandra入門
PPT
インフラエンジニアのためのcassandra入門
マルチテナントのアプリケーション実装〜実践編〜
PDF
マルチテナントのアプリケーション実装〜実践編〜
がっつりMongoDB事例紹介
PPTX
がっつりMongoDB事例紹介
分散システムの限界について知ろう
PDF
分散システムの限界について知ろう
Docker Compose 徹底解説
PDF
Docker Compose 徹底解説
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Cassandraのしくみ データの読み書き編
PPT
Cassandraのしくみ データの読み書き編
BuildKitの概要と最近の機能
PDF
BuildKitの概要と最近の機能
コンテナを突き破れ!! 〜コンテナセキュリティ入門基礎の基礎〜(Kubernetes Novice Tokyo #11 発表資料)
PDF
コンテナを突き破れ!! 〜コンテナセキュリティ入門基礎の基礎〜(Kubernetes Novice Tokyo #11 発表資料)
実践 NestJS
PDF
実践 NestJS
週末趣味のAWS Transit Gatewayでの経路制御
PPTX
週末趣味のAWS Transit Gatewayでの経路制御
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
初心者向けMongoDBのキホン!
PPTX
初心者向けMongoDBのキホン!
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PDF
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
Kubernetesでの性能解析 〜なんとなく遅いからの脱却〜(Kubernetes Meetup Tokyo #33 発表資料)
PPTX
Kubernetesでの性能解析 〜なんとなく遅いからの脱却〜(Kubernetes Meetup Tokyo #33 発表資料)
普通の人でもわかる Paxos
PDF
普通の人でもわかる Paxos
アーキテクチャから理解するPostgreSQLのレプリケーション
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Dockerからcontainerdへの移行
PDF
Dockerからcontainerdへの移行
トランザクションをSerializableにする4つの方法
PPTX
トランザクションをSerializableにする4つの方法
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
がっつりMongoDB事例紹介
がっつりMongoDB事例紹介
分散システムの限界について知ろう
分散システムの限界について知ろう
Docker Compose 徹底解説
Docker Compose 徹底解説
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
コンテナを突き破れ!! 〜コンテナセキュリティ入門基礎の基礎〜(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! 〜コンテナセキュリティ入門基礎の基礎〜(Kubernetes Novice Tokyo #11 発表資料)
実践 NestJS
実践 NestJS
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
Kubernetesでの性能解析 〜なんとなく遅いからの脱却〜(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 〜なんとなく遅いからの脱却〜(Kubernetes Meetup Tokyo #33 発表資料)
普通の人でもわかる Paxos
普通の人でもわかる Paxos
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法

Similar to Consistent hash

Consistent Hashingの小ネタ
PDF
Consistent Hashingの小ネタ
Jump Consistent Hash
PDF
Jump Consistent Hash
Coherenceを利用するときに気をつけること #OracleCoherence
PPTX
Coherenceを利用するときに気をつけること #OracleCoherence
アルゴリズムとデータ構造9
PPT
アルゴリズムとデータ構造9
HashTable と HashDos
PDF
HashTable と HashDos
[アルゴリズムイントロダクション勉強会] ハッシュ
PDF
[アルゴリズムイントロダクション勉強会] ハッシュ
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
PDF
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
ConcurrentHashMap Code Reading
PDF
ConcurrentHashMap Code Reading
並列データベースシステムの概念と原理
PDF
並列データベースシステムの概念と原理
Consistent Hashingの小ネタ
Consistent Hashingの小ネタ
Jump Consistent Hash
Jump Consistent Hash
Coherenceを利用するときに気をつけること #OracleCoherence
Coherenceを利用するときに気をつけること #OracleCoherence
アルゴリズムとデータ構造9
アルゴリズムとデータ構造9
HashTable と HashDos
HashTable と HashDos
[アルゴリズムイントロダクション勉強会] ハッシュ
[アルゴリズムイントロダクション勉強会] ハッシュ
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
ConcurrentHashMap Code Reading
ConcurrentHashMap Code Reading
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理

Consistent hash

AltStyle によって変換されたページ (->オリジナル) /