程序员JavaJava笔试面试

分布式唯一 ID

2021-08-04  本文已影响0人  GeorgeMR

在分布式系统中,有些场景需要使用全局唯一 ID,一来作为业务标识,一来为了满足接口的幂等性设计。例如我们文件系统中的 fid。
单表情况下我们可以直接使用数据库的自增id,但是分库分表后就无法满足需求了,需要想办法通过其他手段来实现。
对于全局唯一ID,需要具备的特性:

利用数据库自增id生成

实现方式

image.png

优点

缺点

UUID

实现方式

优点

缺点

Redis/MongoDB 文档全局唯一ID/zookeeper

实现方式

优点

缺点

雪花算法

实现方式

image.png

优点

缺点

可以看到我们采用的方案并没有满足全部全局ID的特性,就好像分布式系统的 CAP 特性,我们只能尽量多的满足其中的特性。

没有最好的方案,只有最合适的方案。

上一篇下一篇

猜你喜欢

热点阅读