雪花算法(Snowflake)生成的ID不是递增的。雪花算法生成的ID是一个64位的长整型,结构如下:
- 1位符号位,始终为0,表示正数。
- 41位时间戳,表示当前时间与某个固定时间点的差值(毫秒级)。
- 10位机器标识,可以部署在1024个节点上。
- 12位序列号,用于标识同一毫秒内生成的不同ID。
由于时间戳部分占据了41位,因此在同一毫秒内生成的ID,其时间戳部分是相同的。而序列号部分在每毫秒内是递增的,所以雪花算法生成的ID在同一毫秒内是递增的。但是,如果跨毫秒生成ID,由于时间戳部分会重新从0开始,所以生成的ID将不再是递增的。
***雪花算法生成的ID在同一毫秒内是递增的,但在不同毫秒之间则不是。