アルゴリズムに関する漫画: コンシステント・ハッシュとは何ですか?

アルゴリズムに関する漫画: コンシステント・ハッシュとは何ですか?

1年前——

同システムでは、今後2年間で総注文数が約1億件に達すると予測している。

1 つの MySQL テーブルに 500 万件のレコードが格納されている場合、当面はデータベースをシャードする必要はありません。1 つのデータベースに 30 個のシャードがある方が、より適切な水平シャーディング ソリューションです。

そこで、Xiao Hui は次のテーブル パーティション分割ロジックを設計しました。

  1. 注文テーブルは、単一のデータベースに30個のサブテーブルを作成します。
  2. ユーザー ID と 30 の剰余によって、レコードが格納されるサブテーブルが決まります。
  3. クエリを実行する際は、ユーザー ID を条件として使用する必要があり、モジュロ結果に基づいてクエリ対象のサブテーブルが決定されます。

表の分割方法は以下の通りです(説明を簡単にするため、5つの表に簡略化しています)。

2ヵ月後—

それから半年以上が経ち——

小慧の記憶は終わりを迎える――

1. まず、キャッシュ空間全体をリングストレージ構造として扱います。環状空間は合計 2^32 個のキャッシュ領域に分割され、Redis ではキャッシュ キーが 16384 個のスロットに割り当てられます。

2. 各キャッシュ キーは、ハッシュ アルゴリズムを通じて 32 ビットの 2 進数に変換でき、リング空間内のキャッシュ領域に対応します。すべてのキャッシュ キーを環状空間内の異なる場所にマッピングします。

3. 各キャッシュ ノード (シャード) も、IP をハッシュとして使用し、それをリング スペースにマッピングするなど、同じハッシュ アルゴリズムに従います。

4. キーとノードをどのように一致させるか? 非常に簡単です。各キーの時計回り方向で最も近いノードが、キーが属するストレージ ノードです。したがって、図では、key1 は node1 に格納され、key2 と key3 は node2 に格納され、key4 は node3 に格納されます。

1. ノードを追加する

キャッシュ クラスター内のノード数が増加しても、環状空間全体のマッピングでは一貫したハッシュの時計回りのルールが維持されるため、少数のキーの所有権が影響を受けます。

どのキーが影響を受けるでしょうか? 図では、node1 と node2 の間に新しいノード node4 が追加されています。時計回りのルールに従うと、node1 から node4 までのキャッシュは node2 ではなく、新しいノード node4 に属します。したがって、影響を受けるキーは key2 のみです。

最後に、key2 のキャッシュ データが node2 から node4 に移行され、一貫性のあるハッシュ ルールに準拠した新しいキャッシュ構造が形成されます。

2. ノードを削除する

キャッシュ クラスター内のノードを削除する必要がある場合 (たとえば、ノードがクラッシュした場合)、環状空間全体のマッピングでも一貫性のあるハッシュの時計回りのルールが維持され、少数のキーの所有権も影響を受けます。

どのキーが影響を受けるでしょうか? 元のノード node3 はグラフから削除されます。時計回りのルールに従って、元々 node3 が所有していたキャッシュされたデータは、node3 の時計回りの後継ノード node1 に「委託」される必要があります。したがって、影響を受けるキーは key4 のみです。

最後に、key4 のキャッシュ データが node3 から node1 に移行され、一貫性のあるハッシュ ルールに準拠した新しいキャッシュ構造が形成されます。

上図に示すように、node1 の IP アドレスが 192.168.1.109 の場合、リング空間内の元の node1 の位置は hash("192.168.1.109") になります。

node1 に基づいて 2 つの仮想ノード (node1-1、node1-2) を構築します。リング空間内の仮想ノードの位置は、(IP+サフィックス) を使用して計算できます。例:

ハッシュ("192.168.1.109#1")、ハッシュ("192.168.1.109#2")

この時点で、環状空間には物理ノード node1 と node2 は存在せず、仮想ノード node1-1、node1-2、node2-1、および node2-2 のみが存在することになります。仮想ノードの数が多いため、キャッシュ キーと仮想ノード間のマッピング関係は比較的バランスが取れたものになります。

<<:  女神があなたを好きかどうか知りたいなら、AI マシンであなたの顔をスキャンするだけです。

>>:  ArmとHuaweiが参入し、自動運転チップの戦いでどちらが勝つかは分からない

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

フロントエンドの面接でよく聞かれるアルゴリズムに関する質問

ただし、フロントエンドでアルゴリズムに触れる機会はほとんどありません。ほとんどがインタラクティブな操...

新しいマイクロ液体ロボット:「食べ物」がある限り、連続的かつ自律的に動作可能

ロボットといえば、おそらくR2-D2やC-3POのイメージが思い浮かぶでしょう。しかし、ロボットは大...

...

プログラマーはどのようにして人工知能を学ぶのでしょうか? 2019 年の人工知能の給与見通しはどうでしょうか?

2019年の人工知能の給与水準、まずは全体の給与水準の2つの分析グラフを見てみましょう! ***は...

NLPの新人プロンプトは円を超えて、清華大学劉志遠の最新論文はそれをVLM画像に適用する

[[426388]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

最初の AGI は 2028 年に登場するでしょうか? Google DeepMindは6つのAGI標準を提案し、5つのAGIレベルを定義している

人類は最初の AGI の出現にますます近づいています。最近のインタビューで、DeepMindの共同設...

AI 転移学習はどのように機能しますか? AI モデルとトレーニング プロセスでどのような役割を果たすのでしょうか?

今日、AI プログラムは、写真やビデオ内の顔や物体を認識し、音声をリアルタイムで書き起こし、X 線ス...

人工知能を初めて適用するときに尋ねるべき5つの質問

企業が社内でソリューションを構築する必要は必ずしもありませんが、これが失敗の一般的な原因となります。...

数千人を対象とした調査: AI に対する一般の認識はどのようなものでしょうか?

人工知能は世界を変えようとしていますが、問題は、それがどのように起こるのか誰も正確には知らないことで...

モジュラー大型モデルが登場! IBMがWatsonXコアアーキテクチャの技術的詳細を公開

大規模言語モデル (LLM) は強力なパフォーマンスを備えていますが、既存のモデルのトレーニングと展...

Googleが絵画におけるAI使用の権利を取り戻す、ネットユーザー「DALL・E 2は発売からわずか1ヶ月で時代遅れ?」

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

より良い生活を実現するために、Hongheの2019年の新製品が発売されました

最近、「Honhe AI、生活をより良くする--Honheグループ2019年新製品発表会」が成都で開...

...

...

ナンバーワンのディープラーニングフレームワークはどれですか? 2022年、PyTorchとTensorFlowが再び競い合う

PyTorch または TensorFlow を使用していますか?人々のグループによって答えは異なる...