8-unique_number

第八章 唯一标识符(Unique Identifier)

1 简介

在计算机系统中,唯一标识符(Unique Identifier)是一个很基础、但是很重要的一个概念。通常,唯一标识符用于标识某一个具体的对象、数据、或者事物。因为唯一标识符具有唯一性(Uniqueness),在各服务器之间、在各模块之间传输或者共享唯一标识符不会引起歧义或者混淆。

唯一标识符的生成和管理方法大致可分为两类,我们将在下面的内容中,详细的介绍它们。

2 集中注册与管理(Centralized Registration and Management)

第一种方法是集中注册与管理法。在这种方式下,所有的唯一标识符由一个中心机构(Registry)来管理和分配。用户需向该机构提出申请,通过后,由该机构为该用户分配唯一标识符。这种方法的优势是

  1. 所有的唯一标识符由一个中心机构分发和管理,容易查询。
  2. 分配的唯一标识符能够保证唯一性。
  3. 当唯一标识符使用完毕后,可回收再使用。

但是,这种方法的缺点也很明显。其一,唯一标识符的申请过程较长,手续繁琐。其二,唯一标识符的分配和管理成本高,往往需要专门人员或者软件来管理。

计算机系统中有很多这样的例子,比如: 公共IP地址(Public IP Address)、网络物理地址(MAC Address)、域名(Domain Name)、电子邮箱地址(Email Address)等。

例如:在全球互联网中,每一台可访问的计算机都有至少一个公网IP地址(IPv4或者IPv6)。公网IP地址是唯一的;在网络中不会出现重复的公网IP地址。全球的公网IP地址由IANA(Internet Assigned Numbers Authority)统一管理和分配。网络运营商(Internet Service Provider, or ISP)向IANA申请IP地址段;申请通过后,再将获得的IP地址分配给企业或者个人使用。因此,在获得IP地址后,企业和个人能够连上全球互联网。

3 软件生成

第二种方法是软件生成唯一标识符。在软件系统中,开发人员常常需要使用唯一标识符来唯一标识一件商品、一门课程、或者一个账单。在这种使用场景下,需要系统能够快速地生成大量唯一的标识符。因此,人们发明了多种软件生成的算法。这种算法使用了数学中概率统计的原理,能大量高效的生成标识符。从统计学的角度看,虽然并不能保证生成的标识符是唯一的,但是这些标识符的重复率非常低,已经能够满足绝大多数应用的需求。

与集中注册与管理的方法相比,使用软件生成的方法的优势有:

  1. 生成和管理的成本几乎为零。
  2. 生成的标识符的重复率非常低,已能满足绝大多数应用的需求。
  3. 标识符的个数“几乎无限多”,能满足任何大型系统的需求。

UUID(Universally Unique Identifier),称为通用唯一标识码,是一个128位的整数,主要用于标识计算机系统中的信息。UUID由Open Source Foundation组织标准化,收录于分布式计算环境(Distributed Computing Environment)标准中。目前,UUID的生成方法有五个版本。版本1和版本2使用了计算机的网络物理地址(MAC Address, Media Access Control Address)和时间戳(Timestamp)信息。人们发现版本1和版本2并不安全。因为,根据生成出的标识符可能能够反推出计算机的网络物理地址,进而预测下一个生成的唯一标识符。版本3和版本5增强了其安全性。给定一个命名空间(Namespace),版本3使用命名空间的MD5的值;版本5使用命名空间SHA-1的值。因为版本3和5都是用的一种哈希方法(Hashing),相同的命名空间会映射到相同的UUID上,但是,从UUID反推出命名空间是极其困难的。版本4使用的是随机算法。如果开发人员需要一系列的随机的、唯一的标识符的话,UUID的版本4是一个很好的选择。

如果将UUID转换成可读的文本的话,一个UUID标识符可由36个字符,以8-4-4-4-12的格式表达。例如:123e4567-e89b-12d3-a456-426652340000。这个较长的字符串一共有5个部分;它们的长度分别是8个、4个、4个、4个、12个字符,由短横线分隔。因为UUID的空间非常大,出现两个相同的UUID的几率非常低。以UUID版本4的生成算法为例,生成2.71 x 1018个UUID,出现至少一个冲突(Collision)的概率约为50%。换句话说,如果使用UUID版本4的生成算法每秒生成10亿个UUID,连续生成85年,出现一个冲突的概率约为50%。由此可见,UUID版本4已经足以满足各种应用的需求。

小水滴提供了在线UUID生成工具,欢迎大家使用。

3 结语

本章介绍了计算机系统唯一标识符的基本概念和主要两种生成和维护的方法。UUID是较为流行的一种通用唯一标识码。它的第四个版本能随机生成大量的、“唯一的”标识符。出现重复标识符的概率非常低。

上一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.