mirror of
https://github.com/doocs/advanced-java.git
synced 2024-12-28 04:10:08 +08:00
update docs/distributed-system/distributed-transaction.md.
This commit is contained in:
parent
b4137403e7
commit
16c13093c9
@ -71,7 +71,7 @@ TCC 的全称是:`Try`、`Confirm`、`Cancel`。
|
||||
3. 如果发送了确认消息,那么此时 B 系统会接收到确认消息,然后执行本地的事务;
|
||||
4. mq 会自动**定时轮询**所有 prepared 消息回调你的接口,问你,这个消息是不是本地事务处理失败了,所有没发送确认的消息,是继续重试还是回滚?一般来说这里你就可以查下数据库看之前本地事务是否执行,如果回滚了,那么这里也回滚吧。这个就是避免可能本地事务执行成功了,而确认消息却发送失败了。
|
||||
5. 这个方案里,要是系统 B 的事务失败了咋办?重试咯,自动不断重试直到成功,如果实在是不行,要么就是针对重要的资金类业务进行回滚,比如 B 系统本地回滚后,想办法通知系统 A 也回滚;或者是发送报警由人工来手工回滚和补偿。
|
||||
6. 这个还是比较合适的,目前国内互联网公司大都是这么玩儿的,要不你举用 RocketMQ 支持的,要不你就自己基于类似 ActiveMQ?RabbitMQ?自己封装一套类似的逻辑出来,总之思路就是这样子的。
|
||||
6. 这个还是比较合适的,目前国内互联网公司大都是这么玩儿的,要不你就用 RocketMQ 支持的,要不你就自己基于类似 ActiveMQ?RabbitMQ?自己封装一套类似的逻辑出来,总之思路就是这样子的。
|
||||
|
||||
![distributed-transaction-reliable-message](/images/distributed-transaction-reliable-message.png)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user