分布式事务之最大努力通知!

适用于一些最终一致性时间敏感度低的业务,且被动方处理结果 不影响主动方的处理结果。

典型的使用场景:如银行通知、商户通知等。

最大努力通知型的实现方案,一般符合以下特点:

不可靠消息:

  • 业务活动主动方,在完成业务处理之后,向业务活动的被动方发送消息,直到通知N次后不再通知,允许消息丢失(不可靠消息)。

定期校对:

  • 业务活动的被动方,根据定时策略,向业务活动主动方查询(主动方提供查询接口),恢复丢失的业务消息。

举例:

一个短信发送平台,背景是公司内部有多个业务都有发送短信的需求,如果每个业务独立实现短信发送功能,存在功能实现上的重复。

有一个短信平台项目,所有的业务方都接入这个短信平台,来实现发送短信的功能。

image-20231012113713037

1、业务方将短信发送请求提交给短信平台

2、短信平台接收到要发送的短信,记录到数据库中,并标记其状态为已接收

3、短信平台调用外部短信发送供应商的接口,发送短信

4、更新短信发送状态为已发送

5、短信发送供应商异步通知短信平台短信发送结果,而通知可能失败,因此最多只会通知N次

6、短信平台接收到短信发送结果后,更新短信发送状态,可能是成功,也可能失败(如手机欠费)

7、如果最多只通知N次,如果都失败了的话,那么短信平台将不知道短信到底有没有成功发送

8、短信发送供应商需要提供一个查询接口,以方便短信平台驱动的去查询,进行定期校对