分布式事务 - Gukie/interview GitHub Wiki
refer: http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency
本质是二阶段提交
可以采用同 Automikos,Jotm框架
也可以结合MQ进行控制
-
生产者:
- 1.1. 对数据库更新数据
- 1.2. 第一步成功之后,往MQ中写一条消息
- 1.3. 如果以上两步,有任何一个步骤失败了,回滚
-
消费者: 为了防止一条消息多次操作的情况出现,增加一个消息消费状态的MQ
- 2.1. 从MQ中读取消息,并执行相应的业务代码
- 2.2. 当业务代码成功了,将消息消费状态标记为已消费
- 2.3. 如果业务代码失败了,利用MQ的重试机制,重试几次
- 2.4. 如果重试多次之后都失败了(一般这个可以在code中以log的方式纪录,并通知),可通过邮件的形式通知相应的工作人员,进行人工补偿,这是最后一道防线