分布式高并发情况下 UUID 会重复吗?

2018-09-12 09:05:07 +08:00
 CUMTProgrammer
39718 次点击
所在节点    程序员
23 条回复
w292614191
2018-09-13 09:34:22 +08:00
@geelaw 请问,为什么是错误的呢?
LittlePaper
2018-09-13 10:03:20 +08:00
@kernel uuid 不是 32 字节,是 128 位 16 字节。

上面说加变量、加毫秒的都属于歪门邪道,uuid 的格式是有标准的。自己改了就不叫 uuid 了,当然你也可以自定义一个 id 格式,只要能解决问题就行。实际上 version 1 的 time based uuid 本身就是网卡地址加时间,并且按照标准时间戳是 100 纳秒级别的(实际实现不一定)。

关于各种类型 UUID,其优缺点,冲突概率的计算,看看维基百科就都清楚了: https://en.wikipedia.org/wiki/Universally_unique_identifier

另外我觉得单纯依赖于随机数除了依赖于随机数生成器的质量,就完全看脸了。500 万概率虽小,2000 万还有人中呢。randomUUID() 重复的情况网上一搜就会发现有人遇到过,如果对唯一性有很高的要求的话还是可以优化一下,很多人提到的 snowflake 也是一个很好的方案。
CUMTProgrammer
2018-09-13 11:16:53 +08:00
@LittlePaper 谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX