协议:MIT
示例首先到nuget上安装Yitter.IdGenerator最新的包。
// 创建 IdGeneratorOptions 工具,请在布局函数中输入 WorkerId:var options = new IdGeneratorOptions(1);// options.WorkerIdBitLength = 10; // WorkerIdBitLength 默认值6,支持的 WorkerId 最大值为2^6-1,若 WorkerId 超过64,可设置更大的 WorkerIdBitLength// ...... 其它参数设置参考 IdGeneratorOptions 定义,一样平常来说,只要再设置 WorkerIdBitLength (决定 WorkerId 的最大值)。// 保存参数(必须的操作,否则以上设置都不能生效):YitIdHelper.SetIdGenerator(options);// 以上初始化过程只需全局一次,且必须在第2步之前设置。
// 初始化往后,即可在任何必要天生ID的地方,调用以下方法:var newId = YitIdHelper.NextId();
如果基于DI框架集成,可以参考 YitIdHelper 去管理 IdGenerator 工具,必须利用单例模式。
个人特地安装了IdGenerator包,运行20次天生了如下20条ID主键,性能和长度都能接管。
性能
10位自增序列,1000次漂移最大值
连续要求量
5K
5W
50W
传统雪花算法
0.0045s
0.053s
0.556s
雪花漂移算法
0.0015s
0.012s
0.113s
极致性能:500W/s~3000W/s。(所有测试数据均基于8代低压i7打算)
129053495681099 (运行1年)387750301904971 (运行3年)646093214093387 (运行5年)1292658282840139 (运行10年)9007199254740992 (js Number 最大值,可以支撑70年)165399880288699493 (普通雪花算法天生的ID)
结尾
目前唯一ID的实现办法非常多,该开源包作为雪花算法的升级版,其长度压缩,性能提升,实现办法非常大略,是个不错的开源源码,并且其险些支持市情上主流开拓措辞。C#措辞下的代码粗略的浏览过,代码量不多,统共就几个类,而且其是MIT协议的,乃至可以直接将其几个类文件直接整合到项目之中。