雪花算法(Snowflake)生成的ID是自增的。雪花算法生成的ID是一个64位的长整型,结构如下:
- 1位符号位,始终为0,表示正数。
- 41位时间戳,表示当前时间与某个固定时间点的差值,单位是毫秒。这部分可以表示约69年的时间。
- 10位机器标识,可以部署在1024个节点上。
- 12位序列号,用于标识同一毫秒内产生的不同ID,最多可以支持4096个ID。
由于时间戳部分占据了41位,且机器标识和序列号加起来只有12位,因此雪花算法可以支持非常高并发的情况下生成唯一的ID。***由于ID是按照时间有序的,这也便于数据库的索引和查询。
雪花算法生成的ID是单调递增的,这意味着随着时间的推移,新生成的ID总是大于之前的ID。这种特性使得雪花算法非常适合用于需要全局唯一ID的场景,如分布式系统中的订单生成、用户ID生成等。