聊聊 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 生成方式。