From 1fc851a996eeab21c17c415b5bfe362da9bad654 Mon Sep 17 00:00:00 2001 From: yitter Date: Sun, 4 Apr 2021 12:19:18 +0800 Subject: [PATCH] auto commit --- README.md | 83 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index dc72fa9..5cdcbc3 100644 --- a/README.md +++ b/README.md @@ -79,37 +79,8 @@ QQ群:646049993 | 传统雪花算法 | 0.0045s | 0.053s | 0.556s | | 雪花漂移算法 | 0.0015s | 0.012s | 0.113s | -## 效果 - -🟣 js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个 WorkerId(6bit)的同时,能用70年才到 js Number Max 值。 - -🟣 增加WorkerId位数到8bit(256节点)时,15年达到 js Number Max 值。 - - 🟣 极致性能:500W/s~3000W/s。(所有测试数据均基于8代低压i7计算。) - -#### 💎 生成的ID - -默认配置: -``` -WorkerIdBitLength = 6 -SeqBitLength = 6 -``` - -ID示例(基于默认配置): -``` -129053495681099 (本算法运行1年) -387750301904971 (运行3年) -646093214093387 (运行5年) -1292658282840139 (运行10年) -9007199254740992 (js Number 最大值) -165399880288699493 (普通雪花算法生成的ID) -``` - -本算法生成的 ID 值,是 js Number 最大值的 1%-10%,是普通雪花算法值的千分之一,而计算能力却超过普通雪花算法。 - - ## 适用范围 🔷小型、中型、大型需要全局唯一Id(不用Guid)的项目。 @@ -128,7 +99,48 @@ ID示例(基于默认配置): 🔶 允许时间回拨至本算法预设基数(参数可调)。 -## 能用多久 +## 💎 配置参数 + + WorkerIdBitLength,决定 WorkerId 的最大值。 + + SeqBitLength,决定每毫秒生成的ID个数。 + + WorkerIdBitLength + SeqBitLength 必须小于12。 + + WorkerId,最大值2^WorkerIdBitLength-1。 + + +💍 默认配置值: + +``` +WorkerIdBitLength = 6 +SeqBitLength = 6 +``` + +## 💎 关于ID + +💍 ID示例(基于默认配置): + +``` +129053495681099 (本算法运行1年) +387750301904971 (运行3年) +646093214093387 (运行5年) +1292658282840139 (运行10年) +9007199254740992 (js Number 最大值) +165399880288699493 (普通雪花算法生成的ID) +``` + +🟣 本算法生成的 ID 值,是 js Number 最大值的 1%-10%,是普通雪花算法值的千分之一,而计算能力却超过普通雪花算法。 + +🟣 js Number 类型最大数值:9007199254740992,本算法在保持并发性能(5W+/0.01s)和最大64个 WorkerId(6bit)的同时,能用70年才到 js Number Max 值。 + + +### 长度估算 + +💍 每增加 1位 WorkerIdBitLength 或 SeqBitLength,生成的ID数字值将会乘以2,反之则除以2。 + + +### 能用多久 🔵 在默认配置下,ID可用 71000 年不重复。 @@ -139,17 +151,6 @@ ID示例(基于默认配置): 🔵 以上所有工作节点,均拥有 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长度。 - - ## 集成建议 #### 💎 常规集成