浅谈CAS在分布式ID生成方案上的应用 | 架构师之路

本文探讨了如何使用CAS(Casual Atomicity)解决分布式ID生成服务中并发写导致的数据不一致问题。通过举例说明,阐述了在数据库自增ID基础上,如何利用CAS实现服务高可用并防止ID重复,以及这种方式的优缺点,指出虽然生成的ID不是绝对递增,但保持趋势递增。文章最后提到了ABA问题及其优化方案。
摘要由CSDN通过智能技术生成

近几篇文章聊CAS被骂得较多,今天还是聊CAS,谈谈CAS在一种“分布式ID生成方案”上的应用。

 

所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一ID的方法。

 

可以利用DB自增键(auto inc id)来生成全局唯一ID,插入一条记录,生成一个ID:

这个方案利用了数据库的单点特性,其优点为:

  • 无需写额外代码

  • 全局唯一

  • 绝对递增

  • 递增ID的步长确定

 

其不足为:

  • 需要做数据库HA,保证生成ID的高可用

  • 数据库中记录数较多

  • 生成ID的性能,取决于数据库插入性能

 

优化方案为:

  • 利用双主保证高可用

  • 定期删除数据

  • 增加一层服务,采用批量生成的方式降低数据库的写压力,提升整体性能

 

增加服务后,DB中只需保存当前最大的ID即可,在服务启动初始化的过程中,首先拉取当前的max-id:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值