分布式事务解决方案(本地事件+mq)

分布式事务消息

常见解决方案有:两阶段提交(2PC)、补偿事务(TCC)、本地事件表加消息队列、mq事务消息等。

两阶段提交原理:

分布式事务解决方案(本地事件+mq)_第1张图片

最终一致性解决方案

以新用户注册新增一条积分记录为例,所需考虑的场景:
1、保存用户记录后没来得及想消息队列发送消息就宕机了,如何保证mq消息发送?
2、积分系统收到消息后没来得及保存记录就宕机了,如何保证系统重启后不丢失积分记录?

需要在db1和db2中分别建立user表、event表和point表、event表。
时间类型有新增用户、新增积分。
事件进度有new、published、processed.

事件加队列的方式实际上将事务变成了异步执行,与2PC这种同步事务相比,优点如下:
1、吞吐量大,因为不需要等待其他数据源相应
2、容错性好,比如用户系统发布事件时,积分系统甚至可以挂掉。
缺点也很明显就是编程比较复杂。

你可能感兴趣的:(mq)