分布式事务(六)—— 最大努力通知的解决方案

系列目录:

  • 《分布式事务(一)—— 事务的基本概念》

  • 《分布式事务(二)—— CAP和Base理论》

  • 《分布式事务(三)—— 两阶段提交解决方案(2PC)》

  • 《分布式事务(四)——TCC补偿模式解决方案》

  • 《分布式事务(五)——基于本地消息和可靠消息的解决方案》

一、常见分布式事务解决方案

  • 两阶段提交(2PC,Two-phase Commit)
  • TCC补偿模式
  • 基于本地消息表实现最终一致性
  • 基于可靠消息最终一致方案
  • 最大努力通知

二、最大努力通知的解决方案

  最大努力通知也是一种解决分布式事务的方案,其主要是用于解决执行结果的回调通知问题,尤其是执行结果是一个外部调用,我们没法干预其执行的时候,执行结果如何通知给我们的场景。比如我们系统中调用支付宝的支付接口,支付是否成功我们肯定是要关注的,支付宝如何将执行结果告知给我们,这就是最大努力通知要解决的问题。

比如下面以一个重置的例子,来解释最大努力通知的流程:
分布式事务(六)—— 最大努力通知的解决方案_第1张图片
交互流程:

  • 1、账户系统调用充值系统的接口
  • 2、充值系统完成支付处理向账户系统发起充值结果通知,若通知失败,则充值系统按策略进行重复通知
  • 3、账户系统接收到充值结果修改充值状态
  • 4、账户系统未接收到充值通知主动调用充值系统的接口查询充值结果

最大努力通知的目标就是通过一定的机制,最大努力将业务处理结果通知到接收方。

通知的策略:

  • 渐进式的重复通知:比如两次通知的间隔实践逐渐变大,一开始间隔1秒通知一次,后面3秒,半小时等,直到通知次数达到设定的次数限制。
  • 消息校对机制:如果尽最大努力也没有通知到对方,或者接收方消费消息后再次消费,此时可以接收方主动向通知方查询消息来满足需求。

三、最大努力通知与可靠消息一致性的区别

  • 1、解决方案思想不同
    • 可靠消息一致性,发起通知方需要保证将消息发出去,并且将消息发送到通知方,消息的可靠性关键由发起通知方来保证。
    • 最大努力通知,发起通知方尽最大的努力将业务处理结果通知到接收方,但是消息可能接收不到,此时需要接收方主动调用发起方通知的接口查询业务处理结果,通知的可靠性关键在接受通知方
  • 2、两者的业务应用场景不同
    • 可靠消息一致性关注的是交易过程的事务一致性,以异步的方式完成交易。
    • 最大努力通知关注的是交易后的通知事务,即将交易结果可靠的通知出去。
  • 3、技术解决方向不同
    • 可靠消息一致性要解决消息从发出到接收的一致性,即消息发出并且被接收到
    • 最大努力通知无法保证消息从发出到接收的一致性,只提供消息接收的可靠性机制。可靠机制是,最大努力的将消息通知给接收方,当消息无法被接收方接收时,由节后返工主动查询。

后记
  个人总结,欢迎转载、评论、批评指正

你可能感兴趣的:(微服务架构,#,分布式事务,分布式)