我把 Snowflakes 的算法性能提升了万倍
先上结论
- 成果物为高性能可配置的全局递增唯一 id 生成器
- 单节点多线程并发获取场景性能对比:
- 是 twitter 雪花算法两百万倍+
- 是
JDK UUID
的120倍! - 是百度开源算法的 60 倍!。
- PS:这里采用的雪花算法默认格式与其他对比,实际调整参数优化后,性能可以进一步翻倍提升!吊打一切!
- 优雅处理时钟回拨
- 支持突发峰值、持续高压
- 支持格式扩展
网上常用代码
全局 id 生成器,老生常谈的雪花算法,看了一下网上的实现,基本都是类似这种(仅举例)
class SnowFlakeIdGenerator {
/**
* 起始的时间戳(a special day for me)
*/
private final static long START_STAMP = 1555776000000L;
/**
* 每一部分占用的位数
*/
private final static long SEQUENCE_BIT = 6; //序列号占用的位数
private final static long MACHINE_BIT = 14; //机器标识占用的位数
private final static long DATA_CENTER_BIT = 2;//数据中心占用的位数
/**
* 每一部分的最大值
*/
private final static long MAX_DATA_CENTER_NUM = ~(-1L << DATA_CENTER_BIT);
private final static long</