Browse Source

auto commit

tags/v1.0.0
yitter 4 years ago
parent
commit
1fc851a996
1 changed files with 35 additions and 34 deletions
  1. +35
    -34
      README.md

+ 35
- 34
README.md View File

@@ -79,25 +79,48 @@ QQ群:646049993
| 传统雪花算法 | 0.0045s | 0.053s | 0.556s | | 传统雪花算法 | 0.0045s | 0.053s | 0.556s |
| 雪花漂移算法 | 0.0015s | 0.012s | 0.113s | | 雪花漂移算法 | 0.0015s | 0.012s | 0.113s |
## 效果
🟣 极致性能:500W/s~3000W/s。(所有测试数据均基于8代低压i7计算。)
🟣 js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个 WorkerId(6bit)的同时,能用70年才到 js Number Max 值。
## 适用范围
🟣 增加WorkerId位数到8bit(256节点)时,15年达到 js Number Max 值
🔷小型、中型、大型需要全局唯一Id(不用Guid)的项目
🔷 分布式项目。
🟣 极致性能:500W/s~3000W/s。(所有测试数据均基于8代低压i7计算。)
🔷不想将 Long 型转 String 给前端用的项目。(若前端支持bigint,则可不转类型)
## 如何处理时间回拨
🔶 当发生系统时间回拨时,算法采用过去时序的预留序数生成新的ID。
#### 💎 生成的ID
🔶 回拨生成的ID序号,默认靠前,也可以调整为靠后。
🔶 允许时间回拨至本算法预设基数(参数可调)。
## 💎 配置参数
<font color="#11aaff" size="5">❄</font> WorkerIdBitLength,决定 WorkerId 的最大值。
<font color="#11aaff" size="5">❄</font> SeqBitLength,决定每毫秒生成的ID个数。
<font color="#11aaff" size="5">❄</font> WorkerIdBitLength + SeqBitLength 必须小于12。
<font color="#11aaff" size="5">❄</font> WorkerId,最大值2^WorkerIdBitLength-1。
💍 默认配置值:
默认配置:
``` ```
WorkerIdBitLength = 6 WorkerIdBitLength = 6
SeqBitLength = 6 SeqBitLength = 6
``` ```
ID示例(基于默认配置):
## 💎 关于ID
💍 ID示例(基于默认配置):
``` ```
129053495681099 (本算法运行1年) 129053495681099 (本算法运行1年)
387750301904971 (运行3年) 387750301904971 (运行3年)
@@ -107,28 +130,17 @@ ID示例(基于默认配置):
165399880288699493 (普通雪花算法生成的ID) 165399880288699493 (普通雪花算法生成的ID)
``` ```
本算法生成的 ID 值,是 js Number 最大值的 1%-10%,是普通雪花算法值的千分之一,而计算能力却超过普通雪花算法。
## 适用范围
🔷小型、中型、大型需要全局唯一Id(不用Guid)的项目。
🔷 分布式项目。
🔷不想将 Long 型转 String 给前端用的项目。(若前端支持bigint,则可不转类型)
🟣 本算法生成的 ID 值,是 js Number 最大值的 1%-10%,是普通雪花算法值的千分之一,而计算能力却超过普通雪花算法。
## 如何处理时间回拨
🟣 js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个 WorkerId(6bit)的同时,能用70年才到 js Number Max 值。
🔶 当发生系统时间回拨时,算法采用过去时序的预留序数生成新的ID。
🔶 回拨生成的ID序号,默认靠前,也可以调整为靠后。
### 长度估算
🔶 允许时间回拨至本算法预设基数(参数可调)
💍 每增加 1位 WorkerIdBitLength 或 SeqBitLength,生成的ID数字值将会乘以2,反之则除以2。
## 能用多久
### 能用多久
🔵 在默认配置下,ID可用 71000 年不重复。 🔵 在默认配置下,ID可用 71000 年不重复。
@@ -139,17 +151,6 @@ ID示例(基于默认配置):
🔵 以上所有工作节点,均拥有 50W/0.1s 瞬时处理速度。 🔵 以上所有工作节点,均拥有 50W/0.1s 瞬时处理速度。
#### 默认配置
💍 WorkerIdBitLength=6,能支持64个 WorkerId,编号0~63。
💍 可通过减少 WorkerIdBitLength 到1~4(为4时最大支持WorkerId为2^4=16个),以减少Id长度。
💍 SeqBitLength=6,能支持每秒并发5W请求时,平均处理速度不超过 0.005 s。(不同语言略有差别,最高性能不超过0.002s,平均不超过0.005s)
💍 可通过增加 SeqBitLength,支持更高的每秒并发数。默认配置能很高效地支持每秒 5W 并发请求,若要求更高,可适当增加 SeqBitLength 到 8~16,但这将增加Id长度。
## 集成建议 ## 集成建议
#### 💎 常规集成 #### 💎 常规集成


Loading…
Cancel
Save