diff --git a/README.md b/README.md index e5a1696ae7c09e52b353045ece800299576ab1b8..eb45c4fb975c6b5d2fdfbad1780a8c0bfa42c2ef 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ QQ群:646049993 ## 新算法特点 - 整形数字,随时间单调递增(不一定连续),长度更短,用50年都不会超过 js Number类型最大值。(默认配置 WorkerId 是6bit,自增数是6bit) + 整形数字,随时间单调递增(不一定连续),长度更短,用50年都不会超过 js Number类型最大值。(默认配置 WorkerId 是6bit,序列数是6bit) 速度更快,是传统雪花算法的2-5倍,0.1秒可生成50万个。(i7笔记本,默认算法配置6bit+6bit) @@ -106,13 +106,13 @@ QQ群:646049993 * 本算法生成的ID由3部分组成(沿用雪花算法定义): * +-------------------------+--------------+----------+ - * | 1.相对基础时间的时间差 | 2.WorkerId | 3.自增数 | + * | 1.相对基础时间的时间差 | 2.WorkerId | 3.序列数 | * +-------------------------+--------------+----------+ * +-------------------------+---- 6 bits ---+- 6 bits -+ * * 第1部分,时间差,是生成ID时的系统时间减去 BaseTime 的总时间差(毫秒单位)。 * 第2部分,WorkerId,是区分不同机器或不同应用的唯一ID,最大值由 WorkerIdBitLength(默认6)限定。 - * 第3部分,自增数,是每毫秒下的自增数,由参数中的 SeqBitLength(默认6)限定。 + * 第3部分,序列数,是每毫秒下的序列数,由参数中的 SeqBitLength(默认6)限定。 ## 💎 ID示例 @@ -146,17 +146,17 @@ QQ群:646049993 🔵 在支持 4096 个工作节点时,ID可用 1120 年不重复。 -## 💎 配置参数 +## 💎 参数设置 - WorkerIdBitLength,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],。 + WorkerIdBitLength,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用有符号short(int16),则最大值为15。 - SeqBitLength,自增数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 + SeqBitLength,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 - WorkerId,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 + WorkerId,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1(实际上根据语言的实现不同可能会限定在 65535 或 32766,原理同 WorkerIdBitLength 的规则)。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 - MinSeqNumber,最小自增数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个自增数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。 + MinSeqNumber,最小序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。 - MaxSeqNumber,最大自增数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大自增数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大自增数,一般不用设置最大自增数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小自增数)。 + MaxSeqNumber,最大序列数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大序列数,一般不用设置最大序列数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小序列数)。 ## 💎 常规集成