如何跨多个服务器生成唯一和[伪]顺序GUID?

时间:2012-06-04 22:18:16

标签: guid uniqueidentifier

我们正在寻找根据此问题标题生成ID的解决方案。

澄清:

  • 我们正在使用几个不同的SQL Server和应用程序服务器,其中任何一个都可以生成id
  • 我们不想使用中央ID生成服务/机器
  • 我们不想使用按位转换为Guids的DateTimes,因为有这么多机器可能会发生冲突。

一种可能的解决方案是为每台机器分配一个起始位置,跳过位置和偏移量,如下所示:https://stackoverflow.com/a/7916720/175127

这可能很容易成为我们的解决方案,但我希望您中的某个人可能拥有更优雅的解决方案,以更好地解决以下某些问题:

  • 一台机器最终可能会分配更多ID并远远超过其他机器。我们可能会重新同步所有计算机,以便每天都有一个新的起始位置,以帮助他们保持步调,但这可能会导致大量空的,未使用的ID。我们希望尽量减少这种情况。

  • 我们希望看看是否可以减少每台机器的外部依赖性。在开始时,他们每个人都必须找出有多少台机器,起点是什么,他们必须决定独特的偏移。我认为通过某种形式的中央控制来管理这些事情可能是不可避免的。

到目前为止,我能想到的最好的事情就是拥有一台可以同时分配ID范围的中央机器。每台其他机器根据需要抓取范围块。如果中央机器发生故障,那么我们使用start-skip-offset系统作为后备。

有什么好主意吗?

0 个答案:

没有答案