什么是UUID通用唯一识别码

什么是UUID通用唯一识别码

目录UUID的核心特性UUID的版本UUID的用途示例代码(生成UUID)优缺点与其他ID方案的对比

UUID(通用唯一识别码,Universally Unique Identifier)是一种用于标识信息的128位唯一标识符标准,其目的是确保在分布式系统中无需中央协调即可生成全局唯一的ID。UUID的标准定义由RFC 4122规范,通常以32位十六进制数表示,由连字符分为五组(例如:550e8400-e29b-41d4-a716-446655440000)。

UUID的核心特性

唯一性

理论上,UUID在时间和空间上都是唯一的。即使在不同系统、不同时间生成的UUID,重复概率极低(几乎可忽略)。

例如,标准版本(v4)的UUID重复概率约为 (10^{-36})。

固定长度

始终为128位(16字节),无论版本如何。

无需中央授权

生成UUID不需要依赖中央服务器或数据库,适合分布式系统。

可读格式

通常表示为32个十六进制字符,分为5组:8-4-4-4-12(如 123e4567-e89b-12d3-a456-426614174000)。

UUID的版本

UUID有多个版本,根据生成方式不同划分:

版本

描述

生成方式

示例

v1

基于时间+MAC地址

时间戳 + 主机MAC地址

2f54a540-7e1a-11ec-90d6-0242ac120003

v2

DCE安全版本

基于v1,加入本地域标识符

(较少使用)

v3

基于MD5哈希

命名空间+名称的MD5哈希

6fa459ea-ee8a-3ca4-894e-db77e160355e

v4

随机生成

完全随机(122位随机性)

550e8400-e29b-41d4-a716-446655440000

v5

基于SHA-1哈希

命名空间+名称的SHA-1哈希

886313e1-3b8a-5372-9b90-0c9aee199e5d

最常用的是v4(随机生成),因其简单且无需额外输入;v3/v5适合需要确定性生成的场景(如相同输入生成相同UUID)。

UUID的用途

分布式系统:作为数据库主键、消息ID等,避免ID冲突。

文件/对象存储:为文件分配唯一名称(如AWS S3的对象键)。

会话标识:Web应用中的用户会话ID。

硬件标识:设备或芯片的唯一标识符。

示例代码(生成UUID)

Python:

import uuid

print(uuid.uuid4()) # v4随机UUID

JavaScript:

const { v4: uuidv4 } = require('uuid');

console.log(uuidv4());

Java:

import java.util.UUID;

UUID id = UUID.randomUUID(); // v4

优缺点

优点:

全局唯一,无需协调。

生成速度快,适合高并发。

缺点:

128位较长(相比自增ID),可能影响存储和索引效率。

无时序性(v4),难以按生成时间排序。

与其他ID方案的对比

ID类型

长度

唯一性

生成方式

示例

UUID

128位

全局唯一

分布式生成

550e8400-e29b-41d4-a716-446655440000

自增ID

通常32/64位

单数据库内唯一

中央数据库分配

1, 2, 3...

Snowflake

64位

分布式唯一

时间+机器ID+序列号

1293845760000000000

如果需要更短的唯一ID,可考虑ULID(时间排序友好)或Snowflake算法(如Twitter的64位ID),但UUID仍是通用性最强的方案。

相关推荐

中国联通186号段大全
Bet体育365提款不到账

中国联通186号段大全

📅 07-12 👁️ 6896
猫咪不乖怎么办?教你几个有效的纠正方法与技巧
Bet体育365提款不到账

猫咪不乖怎么办?教你几个有效的纠正方法与技巧

📅 07-19 👁️ 7743
微信的附近人在哪里
365骑士版app下载

微信的附近人在哪里

📅 07-02 👁️ 1328
德国7:1巴西6500倍赔率 估计今后不会再出现了
Bet体育365提款不到账

德国7:1巴西6500倍赔率 估计今后不会再出现了

📅 06-27 👁️ 7722
塞尔达传说荒野之息怎么赚钱 荒野之息赚钱方法汇总
Bet体育365提款不到账

塞尔达传说荒野之息怎么赚钱 荒野之息赚钱方法汇总

📅 07-07 👁️ 7599
男篮世界杯|安哥拉险些爆冷击败意大利
365bet大陆官网

男篮世界杯|安哥拉险些爆冷击败意大利

📅 07-21 👁️ 8824