分布式事务之最大努力通知!
分布式事务之最大努力通知!
月伴飞鱼适用于一些最终一致性时间敏感度低的业务,且被动方处理结果 不影响主动方的处理结果。
典型的使用场景:如银行通知、商户通知等。
最大努力通知型的实现方案,一般符合以下特点:
不可靠消息:
- 业务活动主动方,在完成业务处理之后,向业务活动的被动方发送消息,直到通知N次后不再通知,允许消息丢失(不可靠消息)。
定期校对:
- 业务活动的被动方,根据定时策略,向业务活动主动方查询(主动方提供查询接口),恢复丢失的业务消息。
举例:
一个短信发送平台,背景是公司内部有多个业务都有发送短信的需求,如果每个业务独立实现短信发送功能,存在功能实现上的重复。
有一个短信平台项目,所有的业务方都接入这个短信平台,来实现发送短信的功能。
1、业务方将短信发送请求提交给短信平台
2、短信平台接收到要发送的短信,记录到数据库中,并标记其状态为已接收
3、短信平台调用外部短信发送供应商的接口,发送短信
4、更新短信发送状态为已发送
5、短信发送供应商异步通知短信平台短信发送结果,而通知可能失败,因此最多只会通知N次
6、短信平台接收到短信发送结果后,更新短信发送状态,可能是成功,也可能失败(如手机欠费)
7、如果最多只通知N次,如果都失败了的话,那么短信平台将不知道短信到底有没有成功发送
8、短信发送供应商需要提供一个查询接口,以方便短信平台驱动的去查询,进行定期校对