架构-分布式:分布式全局ID、分布式事务和数据一致性

1.分布式全局ID

1.1 分库分表引发的id重复问题与解决方案

一:分库分表引发的id重复问题

  • 每个表都有唯一标识,通常使用id表示
  • Id通常采用自增的方式
  • 在分库分表的情况下,每张表的id都从0开始自增
  • 不同的分片上,id可能重复
  • 导致id在全局不唯一,导致业务上出现问题
  • 如下:两个分片表中存在的相同的order_id,导致业务混乱
    在这里插入图片描述
    二:ID重复问题的解决方案
    1、使用UUID作为id实现主键全局唯一保证
    2、通过统一ID序列,实现全局id
    3、雪花算法(推特) 作为全局id

1.2 分布式全局ID - 分布式主键UUID(sharding-jdbc)

一:分布式主键UUID(Sharding-Jdbc支持)
1、UUID通用唯一识别码(universally unique identity)
2、使用UUID,保证每一条记录的id都是不同的。
3、缺点:只是单纯的一个id,没有实际意义。长度32位,太长。
4、方案比较:

  • Mycat不支持UUID的分布式主键方式
  • Sharding-Jdbc支持UUID的分布式主键方式

1.3 分布式全局ID-雪花算法生成全局主键(mycat)

一:雪花算法的原理
1、基本保持全局唯一,毫秒内并发最大4096个ID。
2、服务器时间回调,可能引起ID重复。
3、Mycat和Sharding-Jdbc都支持雪花算法。
4、Sharding-Jdbc可以设置最大容忍回调时间。
5、雪花算法原理

  • 雪花算法最终生成ID的结果为一个64bit大小的整数。
    在这里插入图片描述

  • 解释

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值