07、分布式事务 实战 - 分布式事务解决方法-最大努力交付

一 什么是最大努力交付

事务发起方服务执行完本地事务后向消息中间件发送一条消息,消息中间件发送消息给通知服务,通知服务发送消息给下游系统或者服务。

二 使用最大努力交付的前提

同使用可靠消息最终一致性的前提一样:下游服务执行本地事务失败不会对上游服务造成影响。事务不要求强一致性

三 最大努力交付与可靠消息最终一致区别

  • 在消息中间件与下游服务或系统之间增加了一个通知服务。
  • 通知服务会根据频率规则通知下游服务或者系统。
  • 上游服务应该提供一个校对接口给下游服务查询是否应该执行某某业务。在下游服务无法收到通知服务的消息时使用。

四 增加一个通知服务的好处

1、 对外屏蔽MQ;
2、 与其它企业交互时就需要这种模式;
3、 减轻MQ压力,对于一些最终一致性时间敏感度比较低的服务就可以使用这种模式;
 

五 总结

  • 最大努力交付模式也必须解决可靠消息最终一致性的三个问题。
    上游服务的本地事务与发送消息的原子性
    通知服务必须能够从消息中间件接受到消息
    通知服务处理消息的幂等性
  • 对于一些最终一致性时间敏感度比较低的服务就可以使用这种模式。
  • 与其它企业交互时使用这种模式。