跳到主要内容

第十章 最大努力通知型分布式事务原理

一、适用场景

在前面的章节中,虽然简单提到过最大努力通知型分布式事务解决方案的应用场景,但不够全面。这里就最大努力通知型分布式事务解决方案适用地场景进行总结。总体来说,最大努力通知型分布式事务解决方案适用于满足如下特点的场景:

1、 业务主动方完成业务逻辑操作后,向业务被动方发送消息,允许消息丢失;

2、 业务主动方需要提供消息回查接口,供业务被动方回查调用,以恢复丢失的业务消息;
3、 业务被动方未接收到业务主动方发送的消息,或者接收到消息执行业务逻辑失败,业务被动方查询业务主动方提供的消息回查接口,进行数据校对;
4、 业务被动方接收到业务主动方发送过来的消息,执行完业务处理(或者先将消息存储到本地,后续进行业务处理),需要向业务主动方返回已成功接收消息的状态,避免业务主动方触发消息重试机制;
5、 业务主动方未及时收到业务被动方返回的确认消息时,会根据一定的延时策略向业务被动方重新发送消息数据;
6、 业务被动方的业务处理结果不影响业务主动方的业务处理结果;

满足如上业务场景的往往是两个不同系统之间需要满足事务的最终一致性

二、方案特点

特殊的使用场景决定了最大努力通知型方案具有如下特点:

1、 使用到的服务模式有可查询操作、幂等操作;
2、 对最终一致性的时间敏感度低,短则几秒钟或几分钟,长则数天才能达到事务的一致性;
3、 业务被动方对业务的处理结果不会影响业务主动方对业务的处理结果;
4、 多用于跨企业的系统,或者企业内部比较独立的系统之间实现事务的一致性,总之,就是不同系统之间实现事务的一致性;
5、 业务主动方完成业务操作后向业务被动方发送通知消息,并允许消息丢失;
6、 业务主动方可以根据一定的策略设置阶梯型通知规则,在通知失败后,按照规则进行重复通知,直到通知的次数达到设置的最大次数为止;
7、 业务主动方需要提供查询接口给业务被动方按照需求进行校对查询,以便恢复可能丢失的业务消息;

三、基本原理

最大努力通知型分布式事务原理比较简单,在业务主动方主要分为业务处理服务、消息中间件、消息消费服务和消息通知服务四大部分。这四大部分协调完成了最大努力通知型分布式事务,具体如下图所示: