@@ -53,7 +53,7 @@ namespace Yitter.IdGenerator | |||||
/// <summary> | /// <summary> | ||||
/// 最小序列数(含) | /// 最小序列数(含) | ||||
/// 默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
/// 默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
/// </summary> | /// </summary> | ||||
public virtual ushort MinSeqNumber { get; set; } = 5; | public virtual ushort MinSeqNumber { get; set; } = 5; | ||||
@@ -26,7 +26,7 @@ typedef struct IdGenOptions { | |||||
/// 最大序列数(含),设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | /// 最大序列数(含),设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | ||||
uint32_t MaxSeqNumber; | uint32_t MaxSeqNumber; | ||||
/// 最小序列数(含),默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
/// 最小序列数(含),默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
uint32_t MinSeqNumber; | uint32_t MinSeqNumber; | ||||
/// 最大漂移次数(含),默认2000,推荐范围 500-20000(与计算能力有关) | /// 最大漂移次数(含),默认2000,推荐范围 500-20000(与计算能力有关) | ||||
@@ -13,7 +13,7 @@ type IdGeneratorOptions struct { | |||||
WorkerIdBitLength byte // 机器码位长,默认值6,取值范围 [1, 15](要求:序列数位长+机器码位长不超过22) | WorkerIdBitLength byte // 机器码位长,默认值6,取值范围 [1, 15](要求:序列数位长+机器码位长不超过22) | ||||
SeqBitLength byte // 序列数位长,默认值6,取值范围 [3, 21](要求:序列数位长+机器码位长不超过22) | SeqBitLength byte // 序列数位长,默认值6,取值范围 [3, 21](要求:序列数位长+机器码位长不超过22) | ||||
MaxSeqNumber uint32 // 最大序列数(含),设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | MaxSeqNumber uint32 // 最大序列数(含),设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | ||||
MinSeqNumber uint32 // 最小序列数(含),默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
MinSeqNumber uint32 // 最小序列数(含),默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
TopOverCostCount uint32 // 最大漂移次数(含),默认2000,推荐范围500-10000(与计算能力有关) | TopOverCostCount uint32 // 最大漂移次数(含),默认2000,推荐范围500-10000(与计算能力有关) | ||||
} | } | ||||
@@ -148,15 +148,15 @@ QQ群:646049993 | |||||
## 💎 参数设置 | ## 💎 参数设置 | ||||
<font color="#11aaff" size="5">❄</font> **WorkerIdBitLength**,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用有符号short(int16),则最大值为15。 | |||||
<font color="#11aaff" size="5">❄</font> <font color=blue>**WorkerIdBitLength**</font>,WorkerId位长,决定 WorkerId 的最大值,默认值6,取值范围 [1, 19],实际上有些语言采用 无符号ushort(uint16) 类型接收该参数,所以最大值是16,如果是采用有符号short(int16),则最大值为15。 | |||||
<font color="#11aaff" size="5">❄</font> **SeqBitLength**,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 | |||||
<font color="#11aaff" size="5">❄</font> <font color=blue>**SeqBitLength**</font>,序列数位长,默认值6,取值范围 [3, 21](建议不小于4),决定每毫秒生成的 ID 个数。规则要求:WorkerIdBitLength + SeqBitLength 不超过 22。 | |||||
<font color="#11aaff" size="5">❄</font> **WorkerId**,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1(实际上根据语言的实现不同可能会限定在 65535 或 32766,原理同 WorkerIdBitLength 的规则)。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 | |||||
<font color="#11aaff" size="5">❄</font> <font color=blue>**WorkerId**</font>,机器码,无默认值,必须由外部设定,最大值 2^WorkerIdBitLength-1(实际上根据语言的实现不同可能会限定在 65535 或 32766,原理同 WorkerIdBitLength 的规则)。不同机器或不同应用不能相同,本算法提供一个通过 redis 自动注册 WorkerId 的动态库,详见“Tools\AutoRegisterWorkerId”。 | |||||
<font color="#11aaff" size="5">❄</font> **MinSeqNumber**,最小序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。 | |||||
<font color="#11aaff" size="5">❄</font> <font color=blue>**MinSeqNumber**</font>,最小序列数,默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位。 | |||||
<font color="#11aaff" size="5">❄</font> **MaxSeqNumber**,最大序列数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大序列数,一般不用设置最大序列数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小序列数)。 | |||||
<font color="#11aaff" size="5">❄</font> <font color=blue>**MaxSeqNumber**</font>,最大序列数,设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]),不为0时,用该设置值为最大序列数,一般不用设置最大序列数,除非多机共享WorkerId分段生成ID(此时还要正确设置最小序列数)。 | |||||
## 💎 常规集成 | ## 💎 常规集成 | ||||
@@ -22,7 +22,7 @@ pub struct IdGeneratorOptions { | |||||
/// 设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | /// 设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1]) | ||||
pub MaxSeqNumber: u32, | pub MaxSeqNumber: u32, | ||||
/// 默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号是0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
/// 默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位 | |||||
pub MinSeqNumber: u32, | pub MinSeqNumber: u32, | ||||
/// 最大漂移次数(含),默认2000,推荐范围 500-20000(与计算能力有关) | /// 最大漂移次数(含),默认2000,推荐范围 500-20000(与计算能力有关) | ||||