唯一ID

很多情况下需要生成UUID,通常情况下一个UUID是128位, Java就有官方的util UUID。通过UUID.randomUUID()可以获得一个随机的UUID。

UUID有四种版本:

  1. 基于时间的。通过当前时间戳、随机数和机器MAC地址得到。可以保证全局唯一性,但是用MAC地址会带来安全问题

  2. DCE安全的,与基于时间的相似,但是时间戳前4位换成了POSIX的UID或者GID,这个实际应用中比较少

  3. 基于命名空间的,这个版本的UUID保证了命名空间下的UUID唯一性。

  4. 随机版本的,根据随机数或者伪随机数生成UUID,但是可能会出现重复的??

java.util.UUID产生的UUID是诸如abdeae28-2237-4d1b-9a85-7a7748f2a635这种格式的。

还有一些其他唯一id生成的方法,如Twitter的SnowFlake算法,这是一个可以在分布式系统中生成唯一ID的算法,满足唯一性且大致递增。SnowFlake产生的ID是一个64bit的整数, 其组成部分是 1位标识+41位时间戳+10位节点+12位序列号

Written on May 21, 2019