分佈式 ID 生成算法 -- Snowflake 原

分佈式 ID 生成算法 -- Snowflake

Snowflake 是 Twitter 採用的一種分佈式 ID 生成算法。

核心

Snowflake 算法生成的 ID 包含四個部分:

  1. 最高一位

    佔用 1 bit,值始終是 0,沒有實際作用

  2. 時間戳

    默認佔用 41 bit,精確到毫秒,總共可以容納約 69 年的時間

  3. 工作機器 ID

    佔用 10 bit,高位 5 bit 是數據中心 ID,低位 5 bit 是工作節點 ID,最多可以容納 1024 個節點。

  4. 序列號

    佔用 12 bit,這個值在同一毫秒同一節點上從 0 開始不斷累加,最多可以累加到 4095

因此 SnowFlake 算法在同一毫秒內在單一節點上可以生成 4096 個全局唯一 ID,考慮到最大 1024 個節點,因此 SnowFlake 算法在同一毫秒內可以生成 1024 * 4096 個全局唯一 ID。

除最高位外,其餘三組佔位均可浮動,視具體業務需求而定。

與 UUID 的對比

  • UUID(Universally Unique Identifier),通用唯一識別碼,佔用 32 位的無序字符串,入庫性能較差
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章