设计一个 50 位的全球唯一 ID

Design a 50-bit globally unique 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 秒

What I'm missing to find correct answer ? Can you explain little bit .

这个问题的措辞很奇怪,但很明显,您要使用的 ID 有 32 位来自 IP 地址,8 位低位来自时钟,10 位来自计数器。时钟的 8 位在 256 秒内回绕。