第五章的作业

来源:5-5 本章作业

慕斯卡3278568

2023-03-20

假设从A账户转账5000元到B账户,那么可以有一个参与者负责与A账户的远程接口对接,命名为参与者A,一个参与者负责与B账户的远程接口对接,命名为参与者B。
1,协调者通知参与者A从账户A中扣除5000
2.1,若1返回成功,协调者通知参与者B在B账户中增加5000
2.2, 若1返回失败,协调者放弃操作后面的操作
2.3,若1返回超时,协调者通知参与者A对A账户的操作进行rollback,并放弃后面的操作。
3.1 ,若2.1返回成功,协调者通知参与者A对A账户的操作进行 commit(如果银行的远程接口提供commit)
3.2 , 若2.1返回失败或者超时,协调者通知参与者A对A账户的操作进行 rollback(如果银行的远程接口提供rollback)
4.1,如果3.1返回成功,则通知参与者B 对B账户的操作进行commit
4.2,如果3.1返回失败或者超时,则通知参与者B 对B账户的操作进行rollback

整个过程中最难的我感觉是如何处理协调者挂了的情况,我觉得也许可以让参与者回调一个协调者的方法,用于验证协调者是否挂了,如果挂了,就立刻回滚,避免事务占用的时间太长。
老师,以上是我对第5章作业的回答,您看是否可以,谢谢

写回答

1回答

大能老师

2023-04-10

结合题目的话,从这样的角度思考会更贴切一点:

支付宝充当协调者角色

A银行,就是参与者A

B银行,就是参与者B

当然实际银行间转账会复杂很多,涉及信息流、资金流、清分结算等环节。这里我们只考虑往两个账户做增加操作

0
0

Java分布式架构设计与开发实战

项目贯穿式讲解,真正将理论与实战相结合

325 学习 · 74 问题

查看课程