| @@ -79,25 +79,48 @@ QQ群:646049993 | |||
| | 传统雪花算法 | 0.0045s | 0.053s | 0.556s | | |||
| | 雪花漂移算法 | 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 | |||
| SeqBitLength = 6 | |||
| ``` | |||
| ID示例(基于默认配置): | |||
| ## 💎 关于ID | |||
| 💍 ID示例(基于默认配置): | |||
| ``` | |||
| 129053495681099 (本算法运行1年) | |||
| 387750301904971 (运行3年) | |||
| @@ -107,28 +130,17 @@ 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 年不重复。 | |||
| @@ -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长度。 | |||
| ## 集成建议 | |||
| #### 💎 常规集成 | |||