简介:在微服务架构中,分布式事务的处理是关键问题之一。本文将介绍几种常见的分布式事务解决方案,包括柔性事务、最大努力通知型方案和可靠消息+最终一致性方案,并探讨它们各自的应用场景。
在微服务架构中,各个服务之间是相互独立的,每个服务都有自己的数据库或数据源。这导致了在跨多个服务进行业务操作时,可能会出现数据一致性的问题。为了解决这个问题,我们需要引入分布式事务的解决方案。
一、柔性事务
柔性事务是一种遵循BASE理论的事务模型,它不要求强一致性,而是允许一定时间内不同节点的数据不一致,但要求最终一致。柔性事务适用于对实时性要求不高、允许最终一致性的业务场景。例如,在电商平台的订单支付中,用户支付成功后,订单状态可以异步更新,不必立即返回结果,只要最终状态一致即可。
二、最大努力通知型方案
这种方案通过按规律进行通知,不保证数据一定能通知成功,但会提供可查询操作接口进行核对。最大努力通知型方案主要用在与第三方系统通讯时,例如:调用微信或支付宝支付后的支付结果通知。这种方案结合MQ进行实现,通过MQ发送HTTP请求,设置最大通知次数。达到通知次数后即不再通知。适用场景有银行通知、商户通知等(各大交易业务平台间的商户通知:多次通知、查询校对、对账文件),支付宝的支付成功异步回调等。
三、可靠消息+最终一致性方案(异步确保型)
业务处理服务在业务事务提交之前,向实时消息服务请求发送消息,实时消息服务只记录消息数据,而不是真正的发送。只有在得到确认发送指令后,实时消息服务才会真正发送。这种方式保证了消息的可靠传输,适用于需要保证消息可靠性的场景,如银行转账等。
四、应用场景举例