支付宝蚂蚁金服——基于异步确保型
关注人数:74 发布时间:2021-11-28 16:05:10
异步确保型 tcc 解决方案的直接从业务服务是可靠消息服务,而真正的从业务服务则通过消息服务解耦,作为消息服务的消费端,异步地执行。

▲ 异步确保型 tcc 模型
可靠消息服务需要提供 try、confirm、cancel 三个接口。try 接口只负责持久化记录存储消息数据;confirm 接口确认发送,这时才开始真正的投递消息;cancel 接口取消发送,删除消息数据。
消息服务的消息数据独立存储,独立伸缩,降低从业务服务与消息系统间的耦合,在消息服务可靠的前提下,实现分布式事务的比较终一致。消息服务代替从业务服务实现了 tcc 接口,从业务服务不需要改造,接入成本非常低。
由于从业务服务是异步的消费消息,执行时间不确定,可能会导致不一致时间窗口增加。因此,异步确保型 tcc 分布式事务解决方案只适用于对比较终一致性时间敏感度较低的一些被动型业务(从业务服务的处理结果不影响主业务服务的决策)。比如会员注册服务和邮件发送服务:
▲ 会员注册业务流程
当用户注册会员成功,需要给用户发送一封邮件,告诉用户注册成功,并提示用户激活该会员。但是要注意两点:
如果用户注册成功,一定要给用户发送一封邮件;
如果用户注册失败,一定不能给用户发送邮件。
因此,这就需要会员服务和邮件服务保证原子性,要么都执行,要么都不执行。但是邮件服务是一种被动型的业务活动,并不影响用户是否能够注册成功,它只需要在用户注册成功以后发送邮件给用户即可,邮件服务不参与到主业务活动决策中。
对于此种业务场景,可以使用异步确保型 tcc 分布式事务解决方案,如下:
▲ 会员注册的 tcc 流程
由可靠消息系统来解耦会员服务和邮件服务,会员服务与可靠消息系统组成 tcc 事务模型,保证事务原子性。然后通过可靠消息服务的可靠特性,确保消息一定能够被邮件服务消费,从而使得会员服务与邮件服务在同一个分布式事务中。同时,邮件服务也不会影响会员服务的执行结果,只在会员服务执行成功后被动接收消息。

下一篇:支付宝环保证书怎么获得更多









