系列目录:
一、常见分布式事务解决方案
- 两阶段提交(2PC,Two-phase Commit)
- TCC补偿模式
- 基于本地消息表实现最终一致性
- 基于可靠消息最终一致方案
- 最大努力通知
二、最大努力通知的解决方案
最大努力通知也是一种解决分布式事务的方案,其主要是用于解决执行结果的回调通知问题,尤其是执行结果是一个外部调用,我们没法干预其执行的时候,执行结果如何通知给我们的场景。比如我们系统中调用支付宝的支付接口,支付是否成功我们肯定是要关注的,支付宝如何将执行结果告知给我们,这就是最大努力通知要解决的问题。
比如下面以一个重置的例子,来解释最大努力通知的流程:
交互流程:
- 1、账户系统调用充值系统的接口
- 2、充值系统完成支付处理向账户系统发起充值结果通知,若通知失败,则充值系统按策略进行重复通知
- 3、账户系统接收到充值结果修改充值状态
- 4、账户系统未接收到充值通知主动调用充值系统的接口查询充值结果
最大努力通知的目标就是通过一定的机制,最大努力将业务处理结果通知到接收方。
通知的策略:
- 渐进式的重复通知:比如两次通知的间隔实践逐渐变大,一开始间隔1秒通知一次,后面3秒,半小时等,直到通知次数达到设定的次数限制。
- 消息校对机制:如果尽最大努力也没有通知到对方,或者接收方消费消息后再次消费,此时可以接收方主动向通知方查询消息来满足需求。
三、最大努力通知与可靠消息一致性的区别
- 1、解决方案思想不同
- 可靠消息一致性,发起通知方需要保证将消息发出去,并且将消息发送到通知方,消息的可靠性关键由发起通知方来保证。
- 最大努力通知,发起通知方尽最大的努力将业务处理结果通知到接收方,但是消息可能接收不到,此时需要接收方主动调用发起方通知的接口查询业务处理结果,通知的可靠性关键在接受通知方
- 2、两者的业务应用场景不同
- 可靠消息一致性关注的是交易过程的事务一致性,以异步的方式完成交易。
- 最大努力通知关注的是交易后的通知事务,即将交易结果可靠的通知出去。
- 3、技术解决方向不同
- 可靠消息一致性要解决消息从发出到接收的一致性,即消息发出并且被接收到
- 最大努力通知无法保证消息从发出到接收的一致性,只提供消息接收的可靠性机制。可靠机制是,最大努力的将消息通知给接收方,当消息无法被接收方接收时,由节后返工主动查询。
后记
个人总结,欢迎转载、评论、批评指正