Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yitter
雪花ID全家桶(SnowFlake IdGenerator)
提交
bc7959fd
雪
雪花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,发现更多精彩内容 >>
提交
bc7959fd
编写于
3月 11, 2021
作者:
Z
zhouzj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加版权免责说明
上级
ba167767
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
79 addition
and
16 deletion
+79
-16
README.md
README.md
+9
-9
src/Yitter.IdGenerator/IIdGenerator.cs
src/Yitter.IdGenerator/IIdGenerator.cs
+10
-1
src/Yitter.IdGenerator/ISnowWorker.cs
src/Yitter.IdGenerator/ISnowWorker.cs
+10
-1
src/Yitter.IdGenerator/IdGeneratorOptions.cs
src/Yitter.IdGenerator/IdGeneratorOptions.cs
+10
-1
src/Yitter.IdGenerator/OverCostActionArg.cs
src/Yitter.IdGenerator/OverCostActionArg.cs
+10
-1
src/Yitter.IdGenerator/SnowWorkerM1.cs
src/Yitter.IdGenerator/SnowWorkerM1.cs
+10
-1
src/Yitter.IdGenerator/SnowWorkerM2.cs
src/Yitter.IdGenerator/SnowWorkerM2.cs
+10
-1
src/Yitter.IdGenerator/YitIdGenerator.cs
src/Yitter.IdGenerator/YitIdGenerator.cs
+10
-1
未找到文件。
README.md
浏览文件 @
bc7959fd
...
...
@@ -36,15 +36,15 @@
1.
整形数字,随时间单调递增(不一定连续),长度更短,用50年都不会超过 js Number类型最大值。(默认配置 WorkerId 是6bit,自增数是6bit)
2.
速度更快,是传统算法的2-5倍,0.1秒可生成50万个。(i7笔记本,默认算法配置6bit+6bit)
2.
速度更快,是传统
雪花
算法的2-5倍,0.1秒可生成50万个。(i7笔记本,默认算法配置6bit+6bit)
3.
支持时间回拨处理。比如
Linux
服务器时间回拨1秒,本算法能自动适应生成临界时间的唯一ID。
3.
支持时间回拨处理。比如服务器时间回拨1秒,本算法能自动适应生成临界时间的唯一ID。
4.
支持手工插入新ID。当业务需要在历史时间生成新ID时,用本算法的预留位
每秒能生成5000个
。
4.
支持手工插入新ID。当业务需要在历史时间生成新ID时,用本算法的预留位
能生成5000个每秒
。
5.
漂移时
对外异步
发通知事件。让调用方确切知道算法漂移记录,Log并发调用量。
5.
漂移时
能外
发通知事件。让调用方确切知道算法漂移记录,Log并发调用量。
6.
不依赖任何外部缓存和数据库。(但
WorkerId
必须由外部指定)
6.
不依赖任何外部缓存和数据库。(但
WorkerId
必须由外部指定)
## 性能数据
...
...
@@ -56,7 +56,7 @@
## 效果
1.
js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个WorkerId(6bit)的同时,能用70年才到 js Number Max 值。
1.
js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个
WorkerId(6bit)的同时,能用70年才到 js Number Max 值。
2.
增加WorkerId位数到8bit(128节点)时,15年达到 js Number Max 值。
...
...
@@ -81,13 +81,13 @@
2.
采用中心化 IdGenerator 集群,给节点生成可用 Id 列表,存入 Redis 队列供节点消费。此时64个中心化节点数足够大型互联网项目使用。
## 如何处理时间回拨
1.
当发生系统时间回拨的时候,算法采用过去时序的预留序数
(0-5)
生成新的ID。
1.
当发生系统时间回拨的时候,算法采用过去时序的预留序数生成新的ID。
2.
默认每秒
可
生成100个(速度可调整)。
2.
默认每秒生成100个(速度可调整)。
3.
回拨生成的ID序号,默认靠前,也可以调整为靠后。
4.
允许时间回拨至本算法预设基数(参数可调
,默认大于1年
)。
4.
允许时间回拨至本算法预设基数(参数可调)。
## 能用多久
...
...
src/Yitter.IdGenerator/IIdGenerator.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
namespace
Yitter.IdGenerator
{
...
...
src/Yitter.IdGenerator/ISnowWorker.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
src/Yitter.IdGenerator/IdGeneratorOptions.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
src/Yitter.IdGenerator/OverCostActionArg.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
src/Yitter.IdGenerator/SnowWorkerM1.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Threading
;
using
System.Threading.Tasks
;
...
...
src/Yitter.IdGenerator/SnowWorkerM2.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
src/Yitter.IdGenerator/YitIdGenerator.cs
浏览文件 @
bc7959fd
using
System
;
/*
* 版权属于:yitter(yitter@126.com)
* 开源地址:https://gitee.com/yitter/idgenerator
* 版权协议:MIT
* 版权说明:只要保留本版权,你可以免费使用、修改、分发本代码。
* 免责条款:任何因为本代码产生的系统、法律、政治、宗教问题,均与版权所有者无关。
*
*/
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Threading
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录