gpt4 book ai didi

唯一的、数字的、递增的标识符

转载 作者:行者123 更新时间:2023-12-01 12:01:46 26 4
gpt4 key购买 nike

我需要为我对特定 XML RPC 发出的每个请求生成唯一的、增量的、数字的事务 ID。这些数字只需要在我的域中是唯一的,但会在多台机器上生成。

我真的不想在数据库中跟踪这个数字并在每个事务中处理行锁定等。我尝试使用微秒时间戳来解决这个问题,但只有几个线程发生了冲突——我的应用程序需要支持数百个线程。

如有任何想法,我们将不胜感激。

编辑:如果每个事务 ID 都必须大于前一个请求的 ID 怎么办?

最佳答案

如果您要在数百个线程中使用它,在多台机器上工作,并且需要一个递增的 ID,您将需要一些集中的地方来存储和锁定最后生成的 ID 号。这不一定必须在数据库中,但这是最常见的选择。一个只提供 ID 的中央服务器可以提供相同的功能,但这可能违背了分发它的目的。

如果它们需要递增,任何形式的时间戳都不能保证是唯一的。

如果您不需要它们是增量的,GUID 就可以了。可能对每个系统上的时间戳 + 硬件 ID 进行某种类型的合并可以提供唯一标识符,但 ID 号部分不一定是唯一的。

您可以使用一对硬件 ID + 增量时间戳吗?这将使每台特定机器的 ID 递增,但不一定在整个域中都是唯一的。

----编辑-----

我认为使用任何形式的时间戳都不适合您,原因有两个。

首先,无论您使用何种分辨率的计时器,您都无法保证不同机器上的 2 个线程不会尝试同时安排。在足够高的分辨率下,这不太可能,但不能保证。

其次,要使这项工作正常进行,即使您可以解决上述冲突问题,您也必须让每个系统都具有完全相同的精确到微秒级的时钟,这并不实际。

关于唯一的、数字的、递增的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com