版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chang_li/article/details/89739924
分布式事务消息
常见解决方案有:两阶段提交(2PC)、补偿事务(TCC)、本地事件表加消息队列、mq事务消息等。
两阶段提交原理:
最终一致性解决方案
以新用户注册新增一条积分记录为例,所需考虑的场景:
1、保存用户记录后没来得及想消息队列发送消息就宕机了,如何保证mq消息发送?
2、积分系统收到消息后没来得及保存记录就宕机了,如何保证系统重启后不丢失积分记录?
需要在db1和db2中分别建立user表、event表和point表、event表。
时间类型有新增用户、新增积分。
事件进度有new、published、processed.
事件加队列的方式实际上将事务变成了异步执行,与2PC这种同步事务相比,优点如下:
1、吞吐量大,因为不需要等待其他数据源相应
2、容错性好,比如用户系统发布事件时,积分系统甚至可以挂掉。
缺点也很明显就是编程比较复杂。