在前面我们的售票例子中,乘客购票请求发出--》售票员收款入账--》售票员查询余票--》售票员操作出票
对于后台售票窗口的处理流程为 售票员收款入账--》(售票员查询余票--》售票员操作出票--》系统余票更新这部分归结为出票吧),这将是一个完整的事务。
如果操作出票失败了,那么是要求售票员退回收款,冲销入账的。或者系统余票更新失败了我们也希望全部操作都回滚。
1.我们采用分布式服务治理框架 zookeeper ,分布式同步远程调用框架dubbo来实现
在流程上做控制,只有当收款与出票都完成的情况下,售票过程完成。
首先调用收款入账接口,入账成功则继续调用出票接口,如果出票异常,那么将发送冲销入账的接口进行入账冲销,并返还乘客票款。
很明显将增大工作量,写大量的回滚逻辑。
2.我们采用消息中间件,实现异步调用。同样也是需要些回滚逻辑