雪花算法原理(设计原理、优缺点、如何改造它、以及应用)

  • Published2025-11-28 06:25:21

雪花算法原理(设计原理、优缺点、如何改造它、以及应用)

雪花算法源码

为什么雪花算法是 64 位?

为什么时间戳是41位?占雪花算法的 43-47 bit 位

为什么工作台最大只支持设置 31 ?

工作台设置成了 63 会导致什么后果?

同机器位只支持最大 5 bit位

同理数据累加位只支持最大 12 bit位

雪花算法优点

雪花算法缺点

雪花算法改造

小咸鱼的技术窝

雪花算法源码

雪花算法是一个开源的分布式生成唯一自增 Id 的这么一个工具类。主要的源码如下

/**

* 常规雪花算法:1-42bit位:时间戳 (共 42 位)

* 43-47 bit位:数据中心ID (共 5 位,最大支持 2 的 5 次方减 1 个数据中心)

* 48-52 bit位:工作台ID (共 5 位,最大支持 2 的 5 次方减 1 个工作台)

* 53-64 bit位:累加数ID (共 12 位,最大支持 2 的 12 次方)

*/

public synchronized long nextId() {

long timestamp = timeGen();

if (timestamp < lastTimestamp) {

throw new RuntimeException(

String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));

}

if (lastTimestamp == timestamp) {

sequence = (sequence