雪花算法生成的ID是自增的。雪花算法生成的ID是一个64位的长整型数字,结构如下:
- 1位符号位,始终为0,表示正数。
- 41位时间戳,表示当前时间与某个固定时间点的差值,单位是毫秒。这部分可以表示约69年的时间。
- 10位机器标识,可以部署在1024个节点上。
- 12位序列号,用于标识同一毫秒内产生的不同ID,最多可以支持4096个节点每毫秒生成4096个ID。
由于时间戳部分占据了41位,且机器标识和序列号也占据了相当大的位数,因此雪花算法生成的ID具有全局唯一性,并且在同一毫秒内可以生成多个ID(由序列号决定)。
***雪花算法生成的ID不是递增的,而是根据时间戳生成的,且具有全局唯一性。在分布式系统中,为了保证ID的全局唯一性,通常会结合机器标识和序列号来生成ID。