2012-01-15

[twitter] Snowflake で生成された ID をデコードする

Snowflake とは Twitter の新しい Status ID 生成アルゴリズムの名前です。これは ID 生成サービスをスケーラブルなものにするために、生成サーバーの ID (workerId, datacenterId) と時刻 (timestamp) と、それらが重なった場合に増加させるカウンタ (sequence) に基づいて生成される 64bit 符号なし整数です。

したがって、この Snowflake ID をくっつける前の状態に戻すと元の要素に分解することができるので、それを作ってみました。JavaScript では Snowflake ID は大きすぎて数値として扱えないので、BigNumber という多倍長整数演算ライブラリを使っています。


snowflake decoder
textarea を書き換えると ID らしきものを抽出して詳細が表示されます。

リンク
Twitter Engineering: Announcing Snowflake
Twitter IDs, JSON and Snowflake
src/main/scala/com/twitter/service/snowflake/IdWorker.scala at master from twitter/snowflake - GitHub
はてな匿名ダイアリー - snowflakeの実際
mofigan's tumblr. - Twitterのstatus_idの生成アルゴリズムはsnowflakeなので、ビット演算をすれば投稿...
PFIセミナー - ツイートID生成とツイッターリアルタイム検索システムの話