Twitterの分散型自己増加IDアルゴリズムSnowflakeはidに基づいてマシンid,データセンターid,タイムスタンプを取得する


Twitterの分散型自己増加idアルゴリズムSnowflake javaバージョン
1、ネット上のソースコードは多くて、ここでリストしません
2、アルゴリズムは69年でどのように計算できますか?タイムスタンプは41個を占め、現在のタイムスタンプと設定タイムスタンプの差を格納し、41ビットが格納できる最大差は
(2^41-1)/1000*3600*24*365=69.7年
3、どのようにして生成されたidを通じて各種の情報を反転しますか?
たとえば、生成されたid:719838167306243がバイナリに変換されます.
Long.toBinaryString(719838167306243L)

1010001110101100000110001001  00001  00001  000000000011
タイムスタンプ差値ビット数が固定されていないため、後ろの12はシリアル番号で、前の2つの5ビットはそれぞれマシンidとデータセンターidで、シリアル番号は3で、マシンidとデータセンターidはすべて1で、残りはタイムスタンプ差値で、10進数に変換されます
System.out.println(Long.parseLong("1010001110101100000110001001", 2));

171622793、設定した初期時間1571222732842 Lを加える
System.out.println(171622793L+1571221732842L);

1571393355635に等しく、時間フォーマットを転送すると、id(注文番号生成/ユーザー注文の時間)が生成されます.
githubプロジェクトアドレス:https://github.com/twitter-archive/snowflake