Skip to content

聊聊 UUID

专题简介

  • UUID 是什么
  • 为什么需要 UUID
  • 前端如何生成 UUID
  • UUID 的特性
  • UUID 的缺点

什么是 UUID

UUID 是一个 36 个字符的字母数字字符串是一个全局唯一标识符

为什么存在 UUID

-电商网站里面,用来识别不同的用户,那些没有登录账号的游客身份,用来确定用户的身份。保证游客也可以正常的下单等,也可以用来统计用户的访问网站客户数,因为 UUID 是唯一的。根据这个特性可以统计每天网站的访客数。

前端如何生成 UUID

  • 基于时间戳的 UUID 生成方式:基于当前时间戳和机器的 MAC 地址生成 UUID
  • 基于硬件的 UUID 生成方式:有 MAC 地址 UUID 和 CPU ID UUID
  • 第三方库的引入

UUID 的特性

  • 唯一性:UUID 是全局唯一的标识符,可以为分布式系统提供唯一的标识。
  • 随机性:UUID 的生成过程使用了随机性或伪随机性的元素,生成的 UUID 具有高度随机性,不容易被猜测到。
  • 不可推测性:UUID 是通过一定的算法生成的,生成的 UUID 不能从中推测出任何信息。
  • 可复制性:UUID 可以在不同的时间和地点被重复生成,但是在实践中,由于随机数的使用,重复的概率非常低。
  • 可比较性:UUID 是一个 128 位的二进制数字,可以进行比较操作,比较操作具有一定的顺序性。

UUID 的优点

  • 全局唯一: UUID 可以为分布式系统提供全局唯一的标识符,避免了 ID 冲突的问题。
  • 可比较性:UUID 是一个数字,可以进行比较操作,具有一定的顺序性。
  • 无需中央协调机制:UUID 的生成不需要中央协调机制,因此可以在任何时间和地点生成 UUID。
  • 安全性高:UUID 的生成使用了随机性或伪随机性的元素,生成的 UUID 具有高度随机性,不容易被猜测到。因此可以在安全领域中使用。

UUID 的缺点

  • 占用空间大:UUID 是一个 128 位的二进制数字,占用的空间比较大,不适宜作为数据库主键使用。
  • 不易读懂:由于 UUID 是一个数字,因此不容易被人类读懂,不便于调试和排查问题。
  • 不适合顺序访问:UUID 的生成具有随机性,因此不适合对数据进行顺序访问操作。
  • 算法复杂:UUID 的生成算法比较复杂,在一定程度上影响了性能。

总结

UUID 是一套用于生成全局唯一标识符的标准,具有唯一性、随机性等特性,可以在分布式系统中使用。UUID 的生成方式有多种,其中最为常用的是基于算法的 UUID 生成方式和基于硬件的 UUID 生成方式。UUID 在数据库主键、分布式系统、日志跟踪和安全领域等方面有广泛的应用。虽然 UUID 具有很多优点,但也存在一些缺点,比如占用空间大、不易读懂、不适合顺序访问和算法复杂等。综合来看,UUID 是一种非常有用的标识符生成方式,在实际开发中应根据具体情况选择合适的 UUID 生成方式。

参考地址