Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yitter
雪花ID全家桶(SnowFlake IdGenerator)
提交
7bab6fc4
雪
雪花ID全家桶(SnowFlake IdGenerator)
项目概览
yitter
/
雪花ID全家桶(SnowFlake IdGenerator)
大约 1 年 前同步成功
通知
201
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
雪
雪花ID全家桶(SnowFlake IdGenerator)
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7bab6fc4
编写于
4月 11, 2021
作者:
yitter
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
be1b231f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
7 deletion
+7
-7
README.md
README.md
+7
-7
未找到文件。
README.md
浏览文件 @
7bab6fc4
...
...
@@ -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
\A
utoRegisterWorkerId”。
❄
***WorkerId**
*,机器码,**最重要参数**,无默认值,必须
**全局唯一**,必须由外部设定,缺省条件下最大值63,理论最大值 2^WorkerIdBitLength-1(不同实现语言可能会限定在 65535 或 32767,原理同 WorkerIdBitLength 规则)。不同机器或不同应用实例**不能相同*
*
,你可通过应用程序配置该值,也可通过调用外部服务获取值。针对自动注册WorkerId需求,本算法提供默认实现:通过 redis 自动注册 WorkerId 的动态库,详见“Tools
\A
utoRegisterWorkerId”。
❄
***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长度和生成性能”方面,未做过优化,而这正式本算法——雪花漂移算法的核心所在。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录