雪花算法原理(设计原理、优缺点、如何改造它、以及应用)
雪花算法源码为什么雪花算法是 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
sequence = (sequence + 1) & sequenceMask;
if (sequence == 0) {
timestamp = tilNextMillis(lastTimestamp);
}
} else {
sequence = 0L;
}
lastTimestamp = timestamp;
return ((timestamp - twepoch) |