1
0
mirror of synced 2026-02-22 12:57:56 +08:00

auto commit

This commit is contained in:
yitter
2022-08-11 11:05:21 +08:00
parent 0e58d27314
commit 577aa6620a

View File

@@ -150,7 +150,7 @@ QQ群646049993
**特别提示**:如果一台服务器部署多个独立服务,需要为每个服务指定不同的 WorkerId。
***SeqBitLength***,序列数位长,**默认值6**,取值范围 [3, 21]建议不小于4决定每毫秒基础生成的ID个数。规则要求WorkerIdBitLength + SeqBitLength 不超过 22。
***SeqBitLength***,序列数位长,**默认值6**,取值范围 [3, 21]建议不小于4决定每毫秒基础生成的ID个数。如果每秒请求数不超过5W保持默认值6即可如果超过5W不超过50W建议赋值10。规则要求WorkerIdBitLength + SeqBitLength 不超过 22。
***MinSeqNumber***最小序列数默认值5取值范围 [5, MaxSeqNumber]每毫秒的前5个序列数对应编号0-4是保留位其中1-4是时间回拨相应预留位0是手工新值预留位。
@@ -158,7 +158,8 @@ QQ群646049993
***BaseTime***基础时间也称基点时间、原点时间、纪元时间有默认值2020年是毫秒时间戳是整数.NET是DatetTime类型作用是用生成ID时的系统时间与基础时间的差值毫秒数作为生成ID的时间戳。基础时间一般无需设置如果觉得默认值太老你可以重新设置不过要注意这个值以后最好不变。
第二版增加参数(非必须):
第二版计划增加参数:
***DataCenterId***数据中心ID机房ID默认0请确保全局唯一。
@@ -169,9 +170,9 @@ QQ群646049993
#### 常规集成
1⃣ 用单例模式调用。外部集成方使用更多的实例并行调用本算法不会增加ID产出效能因为本算法采用单线程生成ID。
1⃣ 用单例模式调用。本算法采用单线程生成ID多方调用会被互斥。在同一应用实例内调用者使用多线程或并行方式调用本算法不会增加ID产出速度
2⃣ 指定唯一的 WorkerId。必须由外部系统确保 WorkerId 的全局唯一性,并赋值给本算法入口方法
2⃣ 指定唯一的 WorkerId。必须由外部系统确保 WorkerId 的全局唯一性,并赋值给本算法入口参数
3⃣ 单机多实例部署时使用不同 WorkerId。并非所有实现都支持跨进程的并发唯一保险起见在同一主机上部署多应用实例时请确保各 WorkerId 唯一。
@@ -183,22 +184,22 @@ QQ群646049993
7⃣ 不要修改核心算法。本算法内部参数较多,逻辑较为复杂,在你尚未掌握核心逻辑时,请勿修改核心代码且用于生产环境,除非通过大量细致、科学的测试验证。
8⃣ 应用域内配置策略相同。当系统运行一段时间后,项目需要从程序指定 WorkerId 转到自动注册 WorkerId 时,请确保同一应用域内所有在用实例采用一致的配置策略,这不仅仅针对 WorkerId也包含其他所有配置参数。
8⃣ 应用域内配置策略相同。当系统运行一段时间后,项目需要从程序指定 WorkerId 转到自动注册 WorkerId 时,请确保同一应用域内所有在用实例采用一致的配置策略,这不仅仅针对 WorkerId也包含其他配置参数。
9⃣ 管理好服务器时间。雪花算法依赖系统时间,不要手工大幅度回调操作系统时间。如果一定要调整,切记:确保服务再次启动时的系统时间大于最后一次关闭时的时间。(注:世界级或网络级的时间同步或回拨,引起的系统时间小幅度变化,对本算法没影响)
#### 配置变更
配置变更是系统运行一段时间后再调整运行参数IdGeneratorOptions 选项值),请注意:
配置变更是系统运行一段时间后再调整运行参数IdGeneratorOptions 对象属性),请注意:
🔴 1.最重要的一条原则是BaseTime **只能往前**比老值更小、距离现在更远)赋值,原因是往后赋值极大可能产生相同的时间戳。[**不推荐**在系统运行之后调整 BaseTime]
🔴 1.首要原则是BaseTime **只能更旧**距现在更远让生成的ID值较历史最大值更大确保没有时间重叠区不产生重复ID。[**不推荐** 在系统运行之后调整 BaseTime]
🔴 2.任何时候增加 WorkerIdBitLength 或 SeqBitLength都是可以的,但慎用 “减小”操作,因为这可能导致在未来某天生成的 ID 与过去老配置时相同。[允许在系统运行之后**增加**任何一个 BitLength 值]
🔴 2.任何时候增加 WorkerIdBitLength 或 SeqBitLength都是允许的,但慎用 “减小”操作,因为这可能导致在未来某天生成的 ID 与配置时相同。[允许在系统运行之后 **增加** 任何一个 xxxBitLength 值]
🔴 3.如果必须减小 WorkerIdBitLength 或 SeqBitLength 其中的一项,一定要满足一个条件:新的两个 BitLength 之和要大于 老的值之和。[**不推荐**在运行之后缩小任何一个 BitLength 值]
🔴 3.如果必须减小 WorkerIdBitLength 或 SeqBitLength 其中的一项,一定要满足条件:新的两个 xxxBitLength 之和要大于值之和。[**不推荐** 在运行之后缩小任何一个 BitLength 值]
🔴 4.上述3条规则并未在本算法内做逻辑控制集成方应根据上述规则做好影响评估,确认无误后,再实施配置变更。
🔴 4.上述3条规则并未在本算法内做逻辑控制使用者应在确认新配置符合要求后,再实施配置变更。
## 自动注册WorkerId