常见的分布式唯一ID生成方案的优缺点对比

本文对比了多种分布式唯一ID生成方案,包括数据库增长主键、UUID、Twitter的Snowflake方案、Redis自增机制以及时间戳与业务ID的组合。数据库增长主键简单但可能面临高并发问题;UUID虽然本地生成但ID较长;Snowflake方案高性能且可扩展,但需处理时钟回拨;Redis自增机制利用集群实现全局唯一,但依赖于Redis服务;时间戳与业务ID组合适用于特定业务场景,但适用性有限。flickr的方案则通过replace into优化,适用于低并发场景。
摘要由CSDN通过智能技术生成

数据库增长主键

需要专门使用一个库和一张表,专门用于生成全局唯一ID,向表中(insert into)插入一条数据,会返回一个全局唯一id,然后把这个id设置给业务数据。
优点:落实起来非常方便,只需要在自己的系统的库里面专门使用一张表,用来生成ID。
缺点:单库单表,一旦达到每秒几千的高并发,单库就有可能存在高可用的问题。而且不停的向表中插入id,表中的数据就会越来越多。

UUID

jdk自带的API,可用通过UUID生成一个唯一id,生成一个很长的字符串。
优点: 在本地生成,使用起来很方便,没有并发的压力。
缺点: 生成的唯一id太长了,没有业务含义。

Twitter开源的Snowflake方案

使用64个bit位,最高位1个bit是0,41位放时间戳(到毫秒单位,最多使用69年),10位放机器标识(最多把snowflake程序部署在1024台机器上),12位放序号(每毫秒,每台机器,可以顺序生成4096个ID),snowflake程序分布式部署在多台机器上,每台机器生成的每个ID,都是这一毫秒、机器id、序号,每台机器每毫秒最多4096个ID。
优点: 高性能,高并发,集群化,可伸缩
缺点:可能存在时钟回拨的问题

Redis自增机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

youngerone123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值