设计50位全局唯一ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计50位全局唯一ID相关的知识,希望对你有一定的参考价值。

IPv4网络中的每个主机都具有1秒分辨率的实时时钟,并带有备用电池。每个主机每秒需要生成多达1000个唯一标识符。假设每个主机都有一个全局唯一的IPv4地址。为此,设计一个50位的全局唯一ID。主机生成的标识符将在多长时间(以秒为单位)后回绕?

给出256的答案。


这个问题是数据结构的主题,因为在这里,我需要找到正确的50位全局ID。它询问here before。我不满意,但是没有足够的声誉在那儿发表评论。


我的尝试:

我们有50位唯一ID。 50位可能的唯一ID总数= 2 ^ {50}

幸运的是,每个主机都有32位唯一的IP地址。为了使ID唯一,我们可以在每个唯一ID的前面加上32位。

因此,我们只需要生成其余的18位。因此2 ^ {18}种组合是可能的。

假定每个主机每秒生成1000个ID。

因此,要生成2 ^ {18}组合,将需要2 ^ {18} / 1000秒〜= 262.144秒

我缺少正确答案的地方?你能解释一下吗?

IPv4网络中的每个主机都具有1秒分辨率的实时时钟,并带有备用电池。每个主机每秒需要生成多达1000个唯一标识符。假设每个主机都有一个全局...

答案

这个问题的措词很奇怪,但是很明显,您希望使用的ID具有IP地址的32位,时钟的8位低位和计数器的10位。时钟的8位在256秒内回绕。

以上是关于设计50位全局唯一ID的主要内容,如果未能解决你的问题,请参考以下文章

全局唯一ID设计

实战全局唯一 ID 设计

分布式全局唯一ID与自增序列

分布式系统全局唯一ID生成器:Go 实现

系统设计分布式唯一ID生成方案总结

分布式全局唯一ID生成方案