出典:郴州ウェブサイトの最適化
Idが簡潔にまとめたもの人気の分散型の実装方法
雪のアルゴリズム
スノーフレークさえずりは、オープンソース分散ID生成アルゴリズムです。
核となるアイデアである:長い分散型IDは、以下に示すように、64ビットが、ビット割り当ての元スノーフレークアルゴリズムである固定数、8の種類が長いバイトです。
- 長い符号ビットであるので、第1の識別部は、1ビット、Javaで最上位ビットであり、0は正の数、負の数は1であり、それは0に固定され、一般的に正のIDを生成します
- ( - 固定された開始時刻、現在時刻)タイムスタンプ部分が格納されているが、タイムスタンプの差がされていない一般的に、現在のタイムスタンプに実装され、これは、ミリ秒レベルであり、41bitを表します
- タイムスタンプ41 69年、(1L << 41)/(1000L * 60 * 60 * 24 * 365)= 69年を使用することができる;これは、小さい値から出発生成されたIDを可能にします
- 10ビットは、より柔軟で、例えば、トップ5は、スタンドアロン機IDなどの識別データセンタールーム、ルーム5として用いることができる、ノード1024が配備されてもよいID作業機を占め
- 一部のシリアル番号12ビットを表し、同一のノードが同じID 4096 MSを生成することができるサポート
機械または機械拡張の多くは、一つの構成により、1は確かに現実的ではない、と同様のコンテナーが、このマシンIDが狭く、「物理的」水準にとどまるていない作り、人気のドッキングウィンドウ場合スノーフレークアルゴリズムは、マシンIDを指定するには、マシンごとにマニュアルが必要です、そのような百度オープンソースベースとして、現在のマシンID ID「インスタンス」に拡張されるべきであるUIDジェネレータ雪片アルゴリズムに、アプリケーションの起動の各インスタンスでは、いわゆるマシンIDにデータベースとリターンにレコードを挿入する。類似また、米国のグループ、オープンソースの葉。
ベースのミドルウェア
分散分散ロックIDとほぼ同様の番号は、また依存のMySQL、Redisの、ZKミドルウェア、前記のMySQLベースのAUTO_INCREMENT、ベースINCRをRedisの、ZKはベースノードを命じました。
分散IDはとても性能を向上させるために、一度N ID番号のセグメントを生成し、通常「プリビルド」戦略は、ローカルにキャッシュされ、そうすることの別の利点があり、キー値は勾配を保持に必要なことは、さらにミドルウェア場合でありますあまりにもほとんど効果しばらく少しのためにダウン。
ミドルウェア展開アーキテクチャは、2つのマスターとして、何の中心でない場合に加えて、その後、競合を防ぐために、一般的には、例えば図1及び2の2つのMySQLの初期IDと同じ戦術、同じであるが、ID最初の「ステップ」でない、ステップ長さは、各ノードIDは... 1,3,5のように、2であり; 2,4,6 ...競合しません。