【问题标题】:Design a 50-bit globally unique ID设计一个 50 位的全球唯一 ID
【发布时间】:2016-02-14 22:33:21
【问题描述】:

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

答案是 256。


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


我的尝试:

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

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

因此,我们只需要生成剩余的 18 位。因此可以有 2^{18} 种组合。

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

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

我缺少什么来找到正确的答案?你能解释一下吗?

【问题讨论】:

  • 除了 50 位大小之外,听起来您正在重塑 UUID

标签: data-structures ip-address ipv4


【解决方案1】:

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

【讨论】:

  • 感谢您的解释。
猜你喜欢
  • 2012-03-18
  • 2016-09-30
  • 1970-01-01
  • 2023-03-19
  • 2020-02-16
  • 1970-01-01
  • 2015-01-12
  • 2017-04-27
  • 2017-05-02
相关资源
最近更新 更多