分布式 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 位的无序字符串,入库性能较差

猜你喜欢

转载自my.oschina.net/u/3190679/blog/2208343