一貫性のハッシュアルゴリズムの基本原理

エンジニアは、多くの場合、データキャッシュを設計および実装するために、サーバークラスタを使用し、次の一般的な戦略です。

1。追加、またはデータのクエリを削除するには、データIDが第1のハッシュ関数によりハッシュ値に変換されているかどうか、キーと呼ばれます。

2。現在のマシンは、N個の単位を有する場合、キー%Nの値を算出し、この値は、それは、追加、削除、またはクエリ操作であるかどうか、マシンデータの数が属している、唯一のマシンで実行。

問題を分析するためにこのキャッシュ戦略は持って来ること、および改善方式を提案します。


通常のハッシュアルゴリズム

 

 

 


潜在的な問題のキャッシュ戦略は、すべてのデータがハッシュ値idに基づいて再計算する必要があると、価格が高くなります(N変更)マシンを追加または削除する場合や、新しいマシンの数のハッシュ値は、操作を法これらの問題に対処するため、大規模なデータ移行、一貫したハッシングアルゴリズムを導入します。IDは、デジタル空間(2 ^ 32-1〜0)、すなわち、データをハッシュ関数によってハッシュ値に変換されるが、2 ^ 32の範囲であることが想定されます。

これらの図は、閉じたリングを想像し、次に数値ID環上の位置に対応するハッシュ値を計算した後、次は、そのような環に3台も想像端と端が接続されますリングマシンID三の機械位置は、計算されたハッシュ値に応じて決定されます。だから、どのマシンにデータの一部の所有権をどのように決定しますか?まず、ハッシュ値を算出したハッシュ値を持つデータのIDと、リング内の適切な位置にマッピングは、次に最も近いマシンを見つけるために、この位置から時計回りに、マシンは、属性データです。例えば、図データmは、計算されたハッシュ値が、リングにマッピングされ、存在するように彼の自宅のマシン2

 

 

ローカル残り通常ハッシュアルゴリズムは、機械が大幅単調性を満たさない場合、オブジェクト格納場所の多数が失敗有するように付着される追加または削除した後、最も間違っています。どのように以下のハッシュアルゴリズムの一貫性を分析するために処理されます

一貫したハッシングアルゴリズムは、
1ノード(マシン)が削除
、ノード2(マシン2)を除去することに失敗した場合、この方法は、時計回りの移動に応じて、例えば上に分散、ハッシュ値は、すべてのデータ・セグメントを赤属しのみ赤セクションマッピング位置が変化するように、他のオブジェクトは変更せず、ノード3(マシン)に移動します。図は次のとおりです。

 

 


2.ノード(マシン)が追加
、以下に示すとおりに、対応するハッシュアルゴリズムにより得られたクラスタノード4、KEY4に新しいノードを追加し、リングにマッピングされた場合:

 

 

時計回りに移動の規則に従って、データハッシュ値は、赤色データセグメントがノード4に移動され、また、元のストレージ位置を維持し、他のオブジェクト。ノードの追加および削除、移動時間データの単調さを維持する最小値に達するしながら一貫したハッシングアルゴリズムの分析を通して、そのような分散型クラスタリングアルゴリズムは、データマイグレーション大量のを避けるために非常に適しています、サーバーの上の圧力を低下させます

一貫性のハッシュアルゴリズムの最適化
実際には一貫性のあるハッシュ関数上の大きな問題があり、我々はここで、ハッシュ関数は、入力をサンプリングするのに最適な時間である、出力フィールド上のその出力は均等に分配されると言うが、 3つの入力のみならば、均一な分布を確保することは困難であり、それは図に示したプロファイルを生成することが可能で、非常に不均一な負荷につながります

 

 

各マシンの複数のノードを生成する仮想ノードメカニズムの導入を最適化するために、より一貫したハッシングアルゴリズムは、仮想ノードと呼ばれます。具体的な実践は、達成するために、マシンのIPアドレスまたはホスト名の後に番号またはポート数を増やすことができます。3000は3台のマシンノードを持つ、仮想ノード1000年のマシンを仮定し、ノード3000は、比較的均一のドメインハッシュにマッピングされます

 

おすすめ

転載: www.cnblogs.com/clarencezzh/p/11703747.html