|
|
@@ -4,7 +4,35 @@ |
|
|
|
用一种全新的雪花漂移算法,让ID更短、生成速度更快。 |
|
|
|
核心在于缩短ID长度的同时,还能保持每毫秒并发处理量(50W/0.1s),且能保持伸缩能力。 |
|
|
|
|
|
|
|
## 功能说明 |
|
|
|
## 需求来源 |
|
|
|
|
|
|
|
1.作为架构设计的你,肯定想要解决数据库主键唯一的问题。 |
|
|
|
|
|
|
|
2.你肯定希望这个主键是用最少的存储空间,索引速度更快的。 |
|
|
|
|
|
|
|
3.你还会考虑在分库分表(合库合表)的时候,主键值要能直接使用,并能反映业务时序。 |
|
|
|
|
|
|
|
4.如果这样的主键值太长,超过前端 JS Number 类型最大值,估计你会把 Long 型转换为 String 型,你肯定觉得有点不正常。 |
|
|
|
|
|
|
|
5.自增Guid占用空间大,可能也不是你想要的。 |
|
|
|
|
|
|
|
6.你希望系统能运行 100 年以上。 |
|
|
|
|
|
|
|
|
|
|
|
## 传统雪花算法的问题 |
|
|
|
|
|
|
|
1.生成的ID太长。 |
|
|
|
|
|
|
|
2.依赖外部缓存系统。 |
|
|
|
|
|
|
|
3.并发量不够。 |
|
|
|
|
|
|
|
4.不能解决时间回拨问题。 |
|
|
|
|
|
|
|
5.不支持后补生成前序ID。 |
|
|
|
|
|
|
|
|
|
|
|
## 雪花漂移算法特点 |
|
|
|
|
|
|
|
1.ID更短,是传统算法的几倍,用50年都不会超过 js Number类型最大值。(默认配置WorkerId是6bit,自增数是6bit) |
|
|
|
|
|
|
@@ -18,8 +46,6 @@ |
|
|
|
|
|
|
|
6.不依赖任何外部缓存和数据库。(但WorkerId必须由外部指定) |
|
|
|
|
|
|
|
7.目前是C#版,很快会出java、php等版本。 |
|
|
|
|
|
|
|
|
|
|
|
## 文件说明 |
|
|
|
|
|
|
|