雪花算法原理(设计原理、优缺点、如何改造它、以及应用)
雪花算法原理(设计原理、优缺点、如何改造它、以及应用)
雪花算法源码
为什么雪花算法是 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