描述

迄今为止最全面的分布式主键ID生成器,其具有以下这些特点

参数

来源:GitHub(668) https://github.com/yitter/IdGenerator

协议: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主键,性能和长度都能接受。

实用c代码(开源之分布式主键ID生成器IdGenerator)(1)

性能

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协议的,甚至可以直接将其几个类文件直接整合到项目之中。

,