auto commit
This commit is contained in:
36
README.md
36
README.md
@@ -1,14 +1,14 @@
|
|||||||
# 唯一ID生成器 IdGenerator SnowFlake 雪花算法 原生多语言
|
# 唯一ID生成器 IdGenerator SnowFlake 雪花算法 原生多语言
|
||||||
|
|
||||||
## 介绍
|
## ❄❄❄介绍
|
||||||
|
|
||||||
❄一个全新的雪花漂移算法,生成的ID更短、速度更快。
|
1.一个全新的雪花漂移算法,生成的ID更短、速度更快。
|
||||||
|
|
||||||
❄核心在于缩短ID长度的同时,具有极高瞬时并发处理量(保守值 50W/0.1s)。
|
2.核心在于缩短ID长度的同时,具有极高瞬时并发处理量(保守值 50W/0.1s)。
|
||||||
|
|
||||||
❄原生支持 C#/Java/Go/Rust/C 等语言,并由 Rust 提供 PHP、Python、Node.js、Ruby 等语言多线程安全调用库(FFI)。
|
3.原生支持 C#/Java/Go/Rust/C 等语言,并由 Rust 提供 PHP、Python、Node.js、Ruby 等语言多线程安全调用库(FFI)。
|
||||||
|
|
||||||
❄支持 k8s 等容器化部署,自动注册 WorkerId。
|
4.支持 k8s 等容器化部署,自动注册 WorkerId。
|
||||||
|
|
||||||
|
|
||||||
## 技术支持
|
## 技术支持
|
||||||
@@ -21,23 +21,23 @@ QQ群:646049993
|
|||||||
|
|
||||||
## 需求来源
|
## 需求来源
|
||||||
|
|
||||||
❄作为架构设计的你,想要解决数据库主键唯一的问题,特别是在分布式系统多数据库的时候。
|
1.作为架构设计的你,想要解决数据库主键唯一的问题,特别是在分布式系统多数据库的时候。
|
||||||
|
|
||||||
❄你希望这个主键是用最少的存储空间,索引速度更快,Select、Insert 和 Update 更迅速。
|
2.你希望这个主键是用最少的存储空间,索引速度更快,Select、Insert 和 Update 更迅速。
|
||||||
|
|
||||||
❄你要考虑在分库分表(合库合表)时,主键值可直接使用,并能反映业务时序。
|
3.你要考虑在分库分表(合库合表)时,主键值可直接使用,并能反映业务时序。
|
||||||
|
|
||||||
❄如果这样的主键值太长,超过前端 JS Number 类型最大值,须把 Long 型转换为 String 型,你会觉得有点沮丧。
|
4.如果这样的主键值太长,超过前端 JS Number 类型最大值,须把 Long 型转换为 String 型,你会觉得有点沮丧。
|
||||||
|
|
||||||
❄尽管 Guid 能自增,但占用空间大,索引速度慢,你也不想用它。
|
5.尽管 Guid 能自增,但占用空间大,索引速度慢,你也不想用它。
|
||||||
|
|
||||||
❄应用实例可能超过50个,每个并发请求可达10W/s。
|
6.应用实例可能超过50个,每个并发请求可达10W/s。
|
||||||
|
|
||||||
❄在容器环境部署应用(水平扩展、自动伸缩)。
|
7.在容器环境部署应用(水平扩展、自动伸缩)。
|
||||||
|
|
||||||
❄不想依赖 redis 的自增操作。
|
8.不想依赖 redis 的自增操作。
|
||||||
|
|
||||||
❄你希望系统运行 100 年以上。
|
9.你希望系统运行 100 年以上。
|
||||||
|
|
||||||
|
|
||||||
## 传统算法问题
|
## 传统算法问题
|
||||||
@@ -87,7 +87,7 @@ QQ群:646049993
|
|||||||
|
|
||||||
4.所有测试数据均基于8代低压i7计算。
|
4.所有测试数据均基于8代低压i7计算。
|
||||||
|
|
||||||
#### 生成的ID
|
#### ❄生成的ID
|
||||||
|
|
||||||
默认配置:
|
默认配置:
|
||||||
```
|
```
|
||||||
@@ -149,7 +149,7 @@ ID示例(基于默认配置):
|
|||||||
|
|
||||||
## ★★集成建议★★
|
## ★★集成建议★★
|
||||||
|
|
||||||
#### 常规集成
|
#### ❄常规集成
|
||||||
|
|
||||||
1.用单例模式调用。外部集成方使用更多的实例并行调用本算法,不会增加ID产出效能,因为本算法采用单线程模式生成ID。
|
1.用单例模式调用。外部集成方使用更多的实例并行调用本算法,不会增加ID产出效能,因为本算法采用单线程模式生成ID。
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ ID示例(基于默认配置):
|
|||||||
7.不要修改核心算法。本算法内部参数较多,逻辑较为复杂,在你尚未掌握核心逻辑时,请勿尝试修改核心代码且用于生产环境,除非通过大量细致、科学的测试验证。
|
7.不要修改核心算法。本算法内部参数较多,逻辑较为复杂,在你尚未掌握核心逻辑时,请勿尝试修改核心代码且用于生产环境,除非通过大量细致、科学的测试验证。
|
||||||
|
|
||||||
|
|
||||||
#### 自动注册WorkerId
|
#### ❄自动注册WorkerId
|
||||||
|
|
||||||
唯一ID生成器,依赖WorkerId,当业务服务需要水平自动化复制时,就要求它能自动化注册全局唯一WorkerId,然后各个容器化的无差别部署的业务服务,才能根据它生产唯一ID。
|
唯一ID生成器,依赖WorkerId,当业务服务需要水平自动化复制时,就要求它能自动化注册全局唯一WorkerId,然后各个容器化的无差别部署的业务服务,才能根据它生产唯一ID。
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ extern __declspec(dllexport) GoUint8 ValidateLocalWorkerId(GoInt workerId);
|
|||||||
4.上述3条规则,并未在本算法内做逻辑控制,集成方应根据上述规则做好影响评估,确认无误后,再实施配置变更。
|
4.上述3条规则,并未在本算法内做逻辑控制,集成方应根据上述规则做好影响评估,确认无误后,再实施配置变更。
|
||||||
|
|
||||||
|
|
||||||
## 代码示例
|
## ❄代码示例
|
||||||
|
|
||||||
C#:[查看示例][1]
|
C#:[查看示例][1]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user