Atitit uuid 的概念与实现与最佳实践总结 目录 1. 概念与组成 1 1.1. 在空间(Space)与时间(Time)上的唯一性 1 1.2. UUID 1 1.3. 组成 2 1.3.1
Atitit uuid 的概念与实现与最佳实践总结
目录
1.1. 在空间(Space)与时间(Time)上的唯一性 1
1.3.1. (OSF标准 以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字 2
1.7. UUID的版本 UUID具有多个版本,每个版本的算法不同,应用范围也不同v1--v5 3
1. 概念与组成
GUID(Globally Unique Identifier)是UUID的别名;但在实际应用中,GUID通常是指微软实现的UUID。
1.1. 在空间(Space)与时间(Time)上的唯一性
1.2. UUID
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分
1.3. 组成
1.3.1. (OSF标准 以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得
1.4. 全球唯一标识符(GUID)
通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符(GUID),这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。
1.5. 标准化 RFC4122)
1.6. Uke标准
1.7. UUID的版本 UUID具有多个版本,每个版本的算法不同,应用范围也不同v1--v5
。 首先是一个特例--Nil UUID--通常我们不会用到它,它是由全为0的数字组成,如下: 00000000-0000-0000-0000-000000000000 UUID Version 1:基于时间的UUID 基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址--Java的UUID往往是这样实现的(当然也考虑了获取MAC的难度)。 UUID Version 2:DCE安全的UUID DCE(Distributed Computing Environment)安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。这个版本的UUID在实际中较少用到。 UUID Version 3:基于名字的UUID(MD5) 基于名字的UUID通过计算名字和名字空间的MD5散列值得到。这个版本的UUID保证了:相同名字空间中不同名字生成的UUID的唯一性;不同名字空间中的UUID的唯一性;相同名字空间中相同名字的UUID重复生成是相同的。 UUID Version 4:随机UUID 根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的,但随机的东西就像是买彩票:你指望它发财是不可能的,但狗屎运通常会在不经意中到来。 UUID Version 5:基于名字的UUID(SHA1) 和版本3的UUID算法类似,只是散列值计算使用SHA1(Secure Hash Algorithm 1)算法。 UUID的应用 从UUID的不同版本可以看出, Version 1/2适合应用于分布式计算环境下,具有高度的唯一性; Version 3/5适合于一定范围内名字唯一,且需要或
2. Uke标准
2.1. 大力提升可读性
2.2. 组成 时间 机器id appid等
可以附加唯一id,随机码等
线程id等
3. 问题prob
3.1. 可读性问题
3.2. 机器id的生成
一般是cpu id,主板id,网卡id等
有时候也用硬盘id ,内存id等
4. Ref
Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier),
深入解析UUID及其应用 - CSDN博客.html
延伸阅读
UUID规范:rfc4122
DCE 1.1中的UUID
身份证这件的uuid 前六位地址码加时间码。。
全局唯一ID--UUID介绍、JAVA中UUID的使用 - CSDN博客.html