雪花算法(Snowflake)不会重复。雪花算法是Twitter开源的分布式ID生成策略,其核心思想是使用一个64位的整数来表示一个唯一ID。这64位整数分为几个部分:
- 1位符号位,始终为0,表示正数。
- 41位时间戳,表示当前时间与某个固定时间点的差值,单位是毫秒。这部分可以表示约69年的时间。
- 10位机器标识,可以部署在1024个节点上。
- 12位序列号,用于记录同一毫秒内产生的不同ID,最多可以支持4096个ID。
由于时间戳部分占据了41位,且时间戳是以毫秒为单位的,因此雪花算法可以支持很高的并发量,并且可以保证在相同的时间戳下生成的ID不会重复。
***雪花算法还考虑了机器标识和序列号的分配,使得在同一毫秒内,不同节点生成的ID也不会重复。因此,雪花算法可以满足分布式系统中ID唯一性的需求。