スノーフレーク時のロールバックの問題を考えます

アルゴリズムは比較的単純である、例えば、3分割された内部自己10ビットワーカー-IDを表すことができる三部、41ミリ秒のタイムスタンプを生成するための責任を負う各IDのIDジェネレータは、IDCは、7ビットマシンを表すという。最後の12ビットは、ミリ秒内のIDだけインクリメントされる、すなわち、アルゴリズムは、ミリ秒毎、2 ^ 12 = 4096 ID、QPS4億を生成することができます。

スノーフレークグローバルに一意)1を確保、2)分散システムにおけるID番号の動向は、増分生成、厳密に増加していない、マシンタイムクラスタ同期の問題ので、

 

アルゴリズムは、時間のロールバックで最も深刻な問題があります。例えば、1つのマシンAは、TのIDを生成するが、クロックはバックT-15に転送され、IDが再び可能複製生成しました。

この問題を解決する方法を考えて、

単一のサービスIDジェネレータ後、通常のサービスを再開し、MSのID、検出current_ms、または<= last_ms待機last_ms-current_msごとに生成。再起動後にそのID-ジェネレータはまだ問題がある場合はlast_msを記録する場所がないので。そして、高いためQPS 400ワットではなく、永続的にすることはできません。

サービスは、キー原子上昇を開始し、その結果を労働者-IDとして使用されている場合我々は、このような飼育係やRedisの、ID-発電機などのサードパーティを、ご紹介します。

 

 

おっと!サポートが1024を再起動するだけでなく、のように見えます

おすすめ

転載: www.cnblogs.com/gm-201705/p/11589492.html