uuid

uuid 是通用唯一识别码,它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性,理论上,在这个宇宙中不可能生成两个相同的uuid。在分布式系统中,你可以用uuid来唯一的表示一个元素,不需要中央控制端来做标识的统一分配,任何一台机器上都可以大胆放心的生成uuid。

在很多系统里,uuid都有应用,比如微软的 Microsoft's Globally Unique Identifiers (GUIDs),Linux ext2/ext3 档案系统。我在工作中也曾用到过,在于其他web服务交互时,使用uuid作为一次请求的唯一标识,在日志中记录下来,这样就可以通过uuid来串联起两个系统的调用链路信息。

uuid的算法有5种:

  1. uuid1(), 基于时间戳, 由MAC地址、当前时间戳、随机数生成,可以保证全球唯一性
  2. uuid2(), 基于分布式计算环境DCE,python中没有提供这个算法。
  3. uuid3(),计算名字和命名空间的MD5散列值,可以保证同一命名空间中不同名字的唯一性,和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid
  4. uuid4(), 由伪随机数得到,有一定的重复概率,该概率可以计算出来
  5. uuid5(),基于名字的SHA-1散列值, 算法与uuid3相同,不同的是使用 Secure Hash Algorithm 1 算法

uuid3() 和 uuid5() 不常用,工作中使用uuid1()和uuid() 就可以了

import uuid

print(uuid.uuid1())
print(uuid.uuid3(uuid.NAMESPACE_DNS, 'coolpython'))
print(uuid.uuid4())
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'coolpython'))

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案