微服务架构下分布式事务处理方案选择和对比( 三 )

  • P: Partition tolerance,分区容忍性 。尽管网络上有部分消息丢失,但系统仍然可继续工作 。
  • CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾 。因此在进行分布式架构设计时,必须做出取舍 。而对于分布式数据系统,分区容忍性是基本要求,否则就失去了价值 。因此设计分布式数据系统,就是在一致性和可用性之间取一个平衡 。
    当然,牺牲一致性,并不是完全不管数据的一致性,否则数据是混乱的,那么系统可用性再高分布式再好也没有了价值 。牺牲一致性,只是不再要求关系型数据库中的强一致性,而是只要系统能达到最终一致性即可 。
    从CAP理论到BASE理论
    BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的简写,由 eBay 架构师 Dan Pritchett 于 2008 年在《BASE: An Acid Alternative》论文中首次提出 。
    BASE 思想与 ACID 原理截然不同,它满足 CAP 原理,通过牺牲强一致性获得可用性,一般应用于服务化系统的应用层或者大数据处理系统中,通过达到最终一致性来尽量满足业务的绝大多数需求 。BASE 模型包含如下三个元素:
    • BA:(Basically Available ),基本可用 。
    • S:( Soft State),软状态,状态可以在一段时间内不同步 。
    • E:(Eventually Consistent ),最终一致,在一定的时间窗口内,最终达成一致即可 。
    BASE理论是基于CAP定理演化而来,是对CAP中一致性和可用性权衡的结果 。核心思想:即使无法做到强一致性,但每个业务根据自身的特点,采用适当的方式来使系统达到最终一致性 。
    1、基本可用:指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用 。但不等价于不可用 。比如:搜索引擎0.5秒返回查询结果,但由于故障,2秒响应查询结果;网页访问过大时,部分用户提供降级服务,等 。
    2、软状态:软状态是指允许系统存在中间状态,并且该中间状态不会影响系统整体可用性 。即允许系统在不同节点间副本同步的时候存在延时 。
    3、最终一致性:系统中的所有数据副本经过一定时间后,最终能够达到一致的状态,不需要实时保证系统数据的强一致性 。最终一致性是弱一致性的一种特殊情况 。
    BASE理论面向的是大型高可用可扩展的分布式系统,通过牺牲强一致性来获得可用性 。ACID是传统数据库常用的概念设计,追求强一致性模型 。
    基于可靠消息队列实现最终一致性
    微服务架构下分布式事务处理方案选择和对比

    文章插图
     
    基于消息的最终一致性是消除了分布式事务,是一种在BASE思想指导下比较好的方案 。这种方案实现了两个服务之间的解耦,解耦的关键就是异步消息和消息持久化机制 。在两个服务调用之间,会存在一个真空期,这段时间相关数据不一致,而只是在一个事务的中间状态 。
    事务主动方的业务服务事务提交和消息发送之间必须通过事务同步,可以通过事务管理器进行管理,如两阶段提交 。事务主动方在完成事务提交和消息发送之后,它的最终处理结果不再受到事务被动方的影响 。即发送到事务被动方的事务要么成功,要么重试 。
    所以,消息同样需要满足幂等性 。实际情况下,消息很难具有幂等性,解决这一问题的方法是使用另一个表记录已经被成功应用的消息,这样就可以通过避免消息多次被应用,从而达到幂等性 。
    在实际应用中,如果消息接收端的服务出现失败,可能需要人工干预 。
    场景举例说明
    场景:在采购系统中拟制采购订单,在提交单据申请的时候既需要将单据成功保存到本地,同时又需要启动远程流程平台提供的流程启动服务 。在该场景中,第二个步骤属于必须要最终完成的操作,同时业务上也允许最终一致(不要因为流程平台本身问题导致单据提交不成功,启流程失败如何重试是系统内部的事情)
    对于该场景,基于消息实现最终一致性逻辑如下:
    微服务架构下分布式事务处理方案选择和对比

    文章插图
     
    三种事务处理方案的比较和选择对于上面谈到的三种事务处理方案,我们列个表格比较如下:
    微服务架构下分布式事务处理方案选择和对比

    文章插图
     
    当前主流的方法仍然是事务补偿和BASE最终一致性,同时可以看到,基于消息中间件实现的事务最终一致性由于本身具备高可靠,高性能,并满足大并发的高吞吐量,因此在互联网应用往往采用的更加多 。在企业内部的基于SOA服务的分布式事务控制,


    推荐阅读