Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yitter
雪花ID全家桶(SnowFlake IdGenerator)
提交
2ee5c97b
雪
雪花ID全家桶(SnowFlake IdGenerator)
项目概览
yitter
/
雪花ID全家桶(SnowFlake IdGenerator)
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
2ee5c97b
编写于
4月 06, 2021
作者:
yitter
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
bdbfc4ee
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
9 deletion
+9
-9
README.md
README.md
+9
-9
未找到文件。
README.md
浏览文件 @
2ee5c97b
...
...
@@ -59,7 +59,7 @@ QQ群:646049993
## 新算法特点
<font
color=
"green"
size=
"5"
>
✔
</font>
整形数字,随时间单调递增(不一定连续),长度更短,用50年都不会超过 js Number类型最大值。(默认配置 WorkerId 是6bit,
自增
数是6bit)
<font
color=
"green"
size=
"5"
>
✔
</font>
整形数字,随时间单调递增(不一定连续),长度更短,用50年都不会超过 js Number类型最大值。(默认配置 WorkerId 是6bit,
序列
数是6bit)
<font
color=
"green"
size=
"5"
>
✔
</font>
速度更快,是传统雪花算法的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 年不重复。
## 💎
配置参数
## 💎
参数设置
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
WorkerIdBitLength,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
WorkerIdBitLength,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],
实际上有些语言采用 无符号ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用有符号short(int16),则最大值为15
。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
SeqBitLength,
自增
数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
SeqBitLength,
序列
数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
WorkerId,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools
\A
utoRegisterWorkerId”。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
WorkerId,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1
(实际上根据语言的实现不同可能会限定在 65535 或 32766,原理同 WorkerIdBitLength 的规则)
。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools
\A
utoRegisterWorkerId”。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
MinSeqNumber,最小
自增数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个自增
数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
MinSeqNumber,最小
序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列
数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
MaxSeqNumber,最大
自增数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大自增数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大自增数,一般不用设置最大自增数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小自增
数)。
<font
color=
"#11aaff"
size=
"5"
>
❄
</font>
MaxSeqNumber,最大
序列数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大序列数,一般不用设置最大序列数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小序列
数)。
## 💎 常规集成
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录