UUID函数怎么保证全局唯一的?

请问nebule UUID函数内部用什么算法保证生成的id全局唯一呢?

UUID 有两部分组成,前32位使用 MurmurHash 函数,后 32 位使用时间戳。

具体实现见 代码

分布式环境下,同一时间戳,使用MurmurHash 函数返回一致性hash值相同,不会重复吗?

现在执行流程如下所述:

graphd 这边首先将用户传入的字符串计算一个临时的哈希值,然后将该值取余后去对应的 partition 上请求真实的 uuid 的计算,因为 storaged 这边所有的读写请求都是走的 leader,所以即便有不同字符串 hash 值冲突,在 storaged 这里也会将其排队,按照先后顺序(时间不同)生成对应的 uuid,进而保证了全局唯一。

这里有个取巧的地方是因为低32位都是用的同一个 murmur hash 函数,所以最终生成的 vid 和上述的临时哈希值取余后会落到同一个 partition 上。

浙ICP备20010487号