通用唯一识别码:UUID

通用唯一识别码:UUID

Jan 5, 2022
算法, 系统设计, 密码学

通用唯一识别码(Universally Unique Identifier,UUID)。根据需要不同,标准提供了不同的 UUID 版本以供使用,分别对应于不同的UUID生成规则,下面详细对比下。

UUID各版本优缺点 #

版本 1 #

基于时间的 UUID,主要依赖当前的时间戳及机器 MAC 地址,因此可以保证全球唯一性。

  • 优点:能基本保证全球唯一性
  • 缺点:使用了 MAC 地址,因此会暴露 MAC 地址和生成时间

版本 2 #

分布式安全的 UUID:将版本1的时间戳前四位换为 POSIX 的 UID 或 GID,很少使用

  • 优点:能保证全球唯一性
  • 缺点:很少使用,常用库基本没有实现

版本 3 #

基于名字空间的 UUID(MD5 版):基于指定的名字空间/名字生成 MD5 散列值得到,标准不推荐

  • 优点:不同名字空间或名字下的 UUID 是唯一的;相同名字空间及名字下得到的 UUID 保持重复。
  • 缺点:MD5 碰撞问题,只用于向后兼容,后续不再使用

版本 4 #

基于随机数的 UUID:基于随机数或伪随机数生成

  • 优点:实现简单
  • 缺点:重复几率可计算

版本 5 #

基于名字空间的 UUID(SHA1 版):将版本3的散列算法改为 SHA1

  • 优点:不同名字空间或名字下的 UUID 是唯一的;相同名字空间及名字下得到的 UUID 保持重复。
  • 缺点:SHA1计算相对耗时

总结 #

版本 1/2 适用于需要高度唯一性且无需重复的场景;

版本 3/5 适用于一定范围内唯一且需要或可能会重复生成 UUID 的环境下;

版本 4 适用于对唯一性要求不太严格且追求简单的场景。

参考 #

唯一ID生成算法剖析引UUID数据库自增ID雪花算法方案对比

面试官:怎么设计实现一个唯一ID生成器

通用唯一识别码 - 维基百科

本文共 630 字,上次修改于 Sep 28, 2022,以 CC 署名-非商业性使用-禁止演绎 4.0 国际 协议进行许可。

相关文章

» HTTP/2 概览

» HTTPS 的 SSL/TLS 协议

» HTTPS 的密码学基础

» 实现限流的几种方案

» AES 对称加密学习笔记