近两年的技术面试,分布式系列是面试官经常会问到的一个高频方向,比如:分布式事务、分布式锁、分布式调度、分布式存储、分布式ID等。

今天我们就来聊聊,这里面相对简单的分布式ID,首先说下,我们为什么需要分布式ID?

当系统数据量过大,已经进行分库分表后,我们需要对分散在各个库表中的数据记录进行唯一标识,而分布式ID恰好用来解决这个问题。

接下来,我们看看八大分布式ID的生成方案,以及各自的优缺点是什么。

图片图片

1、UUID

UUID是 Universally Unique Identifier 的缩写,翻译成中文为“通用唯一识别码”,由32个16进制数字 + 4个“-”构成,整体长度为36,其可以保证唯一性,发生碰撞的概率极低。

UUID目前有5个版本,每个版本都有不同的生成方式。目前最常用的是版本4,通过随机数的方式生成。

UUID的生成实现方式非常简单,可以通过java.util包,一行代码即可实现。

import java.util.UUID;
 
public class Test {
    public static void main(String[] args) {
        System.out.println(“本次生成的UUID为” + UUID.randomUUID());
    }
}


//打印结果
//本次生成的UUID为:05cb2d06-1aca-4121-acb0-dfafce04dc46