【问题标题】:Generate unique short ids on multiple servers在多个服务器上生成唯一的短 ID
【发布时间】:2017-11-29 10:51:20
【问题描述】:

我使用shortid 包来生成唯一的房间ID,它在仅与一台服务器一起使用时工作正常,但如果您在多台服务器上使用它,我认为ID 不会是唯一的。有没有办法在不重复的多台服务器上生成唯一 ID?

【问题讨论】:

  • i don't think ids will be unique if you use it on more than one server 你为什么这么认为?
  • id前面加server ip?
  • 通常,生成的随机 ID 将基于与当前机器时间相关的种子 + 运行它的机器所独有的东西。您可能想阅读 shortid 的文档以了解它是如何做到的。我觉得身份冲突的可能性微乎其微。
  • @KarlReid 服务器互不相连,怎么生成不重复的id?
  • 因为它在每台服务器上使用随机种子,而且该种子很可能会有所不同。碰撞的机会非常低。如果这对您来说是个问题,您总是可以使用更强大的解决方案,例如 uuid

标签: javascript node.js unique


【解决方案1】:

有没有办法在多个服务器上生成唯一的 ID 而不会重复?

从您链接到的文档中:

如果您正在运行多个服务器进程,那么您应该确保每个进程都有一个唯一的工作人员 ID。应该是 0 到 16 之间的整数。如果不这样做,则两台服务器生成相同 id 的可能性很小,但如果两者在完全相同的秒内生成并且生成相同数量的 id,理论上是可能的第二个和六个随机数都完全相同。

【讨论】:

  • 如果我的服务器超过 17 台怎么办?
【解决方案2】:

假设您的服务器 ID 为 1,2,3 。 因此,只需将服务器 ID 添加到生成的数字中即可确保唯一,因为您知道在一台服务器中它肯定是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2010-12-11
    • 2015-05-06
    相关资源
    最近更新 更多