阿里业务研发经典案例:另类解法,分布式一致

  1. 云栖社区>
  2. 阿里数据>
  3. 博客>
  4. 正文

阿里业务研发经典案例:另类解法,分布式一致

技术小能手 2017-12-11 10:13:16 浏览944
展开阅读全文

背景

在大型互联网系统中,基于成本的考虑,普遍会使用MySQL数据库;同时由于业务量很大,通常会按照用户维度对数据做垂直拆分,即大家常说的分库分表。

在阿里巴巴的红包系统中,红包的发放操作会涉及两个数据库的事务操作,一个数据库进行预算的扣减,另一个进行用户红包数据的写入,那么如何保证这两个事务操作的一致性呢?

问题及原因分析

开发人员首先想到的就是使用MySQL 的XA 协议,它使用的是两阶段提交协议,如图1所示。由事务协调者来保证所有的事务参与者都完成了第一阶段的准备工作,如果所有参与者都准备好了,那么就通知所有的参与者进行提交。MySQL 数据库仅能扮演参与者的角色,协调者(事务管理器)需要由另外的应用担任。

bb3c8a013cafc98e347dd9f6672944ecd864bc8b

图1 两阶段提交协议

两阶段提交协议对于红包系统来说,在XA 事务中的第一阶段,预算端需要做的事情是冻结要扣除的预算,红包数据端需




网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属云栖号: 阿里数据