“时钟序列”是什么意思?

Qua*_*Van 5 uuid guid rfc dce

RFC 4122(通用唯一标识符 (UUID) URN 命名空间)使用术语“时钟序列”:

4.1.5. 时钟序列

对于 UUID 版本 1,时钟序列用于帮助避免在时钟向后设置或节点 ID 更改时可能出现的重复。

如果时钟向后设置,或者可能已经向后设置(例如,当系统断电时),并且 UUID 生成器无法确定没有生成时间戳大于时钟设置值的 UUID,那么时钟序列必须改变。如果已知时钟序列的先前值,则可以将其递增;否则应设置为随机或高质量的伪随机值。

类似地,如果节点 ID 发生变化(例如,因为网卡已在机器之间移动),将时钟序列设置为随机数可以最大限度地减少由于机器时钟设置的细微差异而导致重复的可能性。如果与更改的节点 ID 相关联的时钟序列的值是已知的,则时钟序列可以增加,但这是不可能的。

时钟序列必须最初(即在系统的生命周期中一次)初始化为随机数,以最小化跨系统的相关性。这提供了针对可能在系统之间快速移动或切换的节点标识符的最大保护。初始值不得与节点标识符相关。

对于 UUID 版本 3 或 5,时钟序列是一个 14 位值,由第 4.3 节中描述的名称构成。

对于 UUID 版本 4,时钟序列是随机或伪随机生成的 14 位值,如第 4.4 节所述。

这个词是什么意思?

use*_*728 6

“时钟序列”似乎是一个非常具有误导性的名称。根据其定义,更好的名称可能是“uuid 的随机组件”。

uuid 的一大名声是,如果我们都生成一个 UUID 值,我们可以非常确信我们不会生成相同的 128 位值。这说明了碰撞的可能性。

如果我们有一个共同的协调者或一个预先商定的方案,我们也可以确信我们不会遇到冲突。

潜在方案:

1. Partition Int Space: I get numbers 1-999, you get 1000-1999.
2. Request Reservation: Request 10 numbers and increment a centrally stored max reserved numbers.  You get numbers 1-10.  The next reservation gets 11-20.
Run Code Online (Sandbox Code Playgroud)

重要的 UUID 观察是,如果您有相当多的位(在本例中为 16),下一个请求者获得相同随机值的可能性很小。

彩票就是基于这个概念。