分布式ID

一.分布式ID

在单体应用中,我们可以通过数据库的主键ID来生成唯一的ID,但是如果数据量变大,就需要进行分库分表,在分库分表之后,如何生成一个全局唯一的ID,就是一个关键的问题。
通常情况下,对于分布式ID来说,我们一般希望他具有以下几个特点:
·全局唯一:必须保证全局唯一性,这个是最基本的要求。
·高性能&高可用:需要保证ID的生成是稳定且高效的。
·递增:根据不同的业务情况,有的会要求生成的ID呈递增趋势,也有的要求必须单调递增(后一个ID必须比前一个大),也有的没有严格要求。
通常,在分布式ID的生成方案主要有以4下种:
. UUID
·数据库自增ID·号段模式
·基于Redis 实现·雪花算法
·第三方ID生成工具


二.每种方式的具体原理

i.UUID

UUID(Universally Unique ldentifier)全局唯一标识符,是指在一台机器上生成的数字。标准的UUID格式为: xXXXXX-xXXX-XXXX-XXX-xXXXXXXXXXxx(8-4-4-4-12),共36个字符,通常由以下几部分的组合而成:当前日期和时间,时钟序列,全局唯一的IEEE机器识别号,通常有32位16进制数字

优点:

1.它保证对在同一时空中的所有机器都是唯一的。
2.性能比较高,不依赖网络,本地就可以生成,使用起来也比较简单。
缺点:

1.长度过长和没有任何含义。
2.用UUID当做分布式ID,存在着不适合范围查询、不方便展示以及查询效率低等问题。

ii.数据库自增

分布式ID也可以使用数据库的自增ID。

优点:一个单库单表能保证ID自增且不重复

缺点:一旦这个数据库挂了,那整个分布式ID的生成服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#HashMap#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值