From 7bab6fc487ff30bfc7f5e98e69b679b1585a61a8 Mon Sep 17 00:00:00 2001 From: yitter Date: Sun, 11 Apr 2021 09:53:41 +0800 Subject: [PATCH] auto commit --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fd69da3..1ba5b16 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ QQ群:646049993 ❄ 这是优化的雪花算法(雪花漂移),它生成的ID更短、速度更快。 -❄ 支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成唯一ID。 +❄ 支持 k8s 等容器环境自动扩容(自动注册 WorkerId),可在单机或分布式环境生成数字型唯一ID。 ❄ 原生支持 C#/Java/Go/Rust/C 等语言,并提供 PHP 扩展及 Python、Node.js 多线程安全调用动态库(FFI)。 -❄ 这是计算机历史上最全面的雪花ID生成器。(目前还未发现更好的,或许你可以😀) +❄ 这是计算机历史上最全面的雪花ID生成器。(目前还未发现更好的,期待你的超越😀) ## 需求来源 @@ -42,7 +42,7 @@ QQ群:646049993 💧 要在容器环境部署应用,支持水平复制、自动扩容。 -💧 不想依赖 redis 的自增操作获得连续的主键ID,因为连续的ID存在数据安全风险。 +💧 不想依赖 redis 的自增操作获得连续的主键ID,因为连续的ID存在业务数据安全风险。 💧 你希望系统运行 100 年以上。 @@ -140,11 +140,11 @@ QQ群:646049993 ## 💎 参数设置 -❄ ***WorkerIdBitLength***,机器码位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用有符号short(int16),则最大值为15。 +❄ ***WorkerIdBitLength***,机器码位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号 ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用 有符号 short(int16),则最大值为15。 -❄ ***WorkerId***,机器码,**最重要参数**,无默认值,必须由外部设定,默认条件下最大值63,理论最大值 2^WorkerIdBitLength-1(实际上不同实现语言可能会限定在 65535 或 32767,原理同 WorkerIdBitLength 的规则)。不同机器或不同应用实例不可相同,你可通过应用程序配置该值,也可通过调用外部服务获取值。针对自动注册WorkerId需求,本算法提供默认实现:通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 +❄ ***WorkerId***,机器码,**最重要参数**,无默认值,必须**全局唯一**,必须由外部设定,缺省条件下最大值63,理论最大值 2^WorkerIdBitLength-1(不同实现语言可能会限定在 65535 或 32767,原理同 WorkerIdBitLength 规则)。不同机器或不同应用实例**不能相同**,你可通过应用程序配置该值,也可通过调用外部服务获取值。针对自动注册WorkerId需求,本算法提供默认实现:通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 -❄ ***SeqBitLength***,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 +❄ ***SeqBitLength***,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒基础生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 ❄ ***MinSeqNumber***,最小序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。 @@ -236,7 +236,7 @@ extern GoInt32 Validate(GoInt32 workerId); ❄ 首先,大厂们不但自己用雪花ID,而且还开源:[百度][81] | [美团][82] | [滴滴][83] | [雪花ID鼻祖-推特][80]。 -❄ 然而,大厂的雪花算法分为“经典算法”和“号段算法”两种,其中“号段算法”依赖网络或外部存储系统,不适合“非大厂”。 +❄ 然而,大厂的雪花算法分为“经典算法”和“号段算法”两种,其中“号段算法”依赖网络或外部存储系统,不适合“非大厂”,且存在无法反应业务时序的缺点。 ❄ 至于其“经典算法”,在“ID长度和生成性能”方面,未做过优化,而这正式本算法——雪花漂移算法的核心所在。