一切安好.
虽然发生了失败,但所有补偿都成功了.没有什么问题
方案1直接pass
方案2,3可以使用消息队列与对应的消费者进行实现.但是会有短暂的数据不一致问题
需要注意,在尝试解决过程中,如果主服务过早推送回滚通知,涉及独自提交的服务早于对应业务处理完成进行补偿,将会导致回滚通知失效.
在这种情况下,上游业务回滚,下游业务独自完成了业务处理,造成数据问题. 会有短暂的数据不一致问题
同样的,在这种情况下,调用补偿也有可能发生调用失败的情况.并且会更复杂,因为此时主服务会发出全局的回滚消息,需要处理补偿消息与回滚消息的顺序问题
此时主服务状态全部丢失且下游业务状态错乱
只能借用可靠消息对进行中的操作进行记录,并在再次开启后进行恢复
如对本文有疑问, 点击进行留言回复!!
网友评论