雪花算法(Snowflake Algorithm)
是一种分布式ID生成算法,由Twitter公司开发并开源。它主要用于在分布式系统中生成全局唯一、趋势递增的ID。
雪花算法生成的ID是一个64
位的长整数,该数字被划分为几部分:
符号位: 占1位,由于生成的ID均为正数,因此这一位固定为0。
时间戳部分: 占41位,2^41 / (3652460601000) 大约69
年的时间周期。
工作机器ID: 占10位,数据中心标识(5位)和机器标识(5位),支持最多1024
个不同的数据中心和每个数据中心内部的1024
台机器。
序列号部分: 占12位,同一节点在同一毫秒内生成不同ID时使用,支持每节点每毫秒生成4096
个不同的ID。
时间戳保证了ID趋势递增
。
数据中心标识和机器标识 保证了在同一毫秒
内 不同节点
生成不同的ID。
序列号 保证在同一毫秒
内同一节点
生成不同ID。
[Ref] 什么是雪花算法,怎么保证不重复的?