分布式事务 -CAP 理论
CAP 理论是什么
分布式事务处理的理论基础就是 CAP,CAP 指的是:设计分布式系统时需要考虑 3 个方面,分别是:一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance),并且分布式系统最多满足两个方面,无法同时满足三种条件。
CAP 释义:
一致性(Consistency):假设服务有多个节点,每个节点都存储了用户数据, 那么每个节点的数据需要保持同一时刻数据一致,这叫一致性。
可用性(Availability):当服务只有一个节点时,节点发生宕机,那么系统就会无法对外提供服务,而假设服务有多个节点,其中一个结点宕机不影响整个集群对外提供服务,故增加服务的节点个数,是为了保证系统的可用性。
分区容错性(Partition Tolerance):分区容忍性就是允许系统通过网络协同工作,例如,将数据库拆分为多个不同的数据库,并且将每个数据库分别部署在不同的地区、不同的网络,这样即使在某个地区发生网络波动或者网络断开时,其他地区的数据库还能继续提供服务,这就叫分区容错性。
CAP 三选二
为什么分布式系统不能同时满足 C、A、P 呢?
因为在保证分区容忍性的前提下,一致性和可用性无法同时满足,如果要保证系统的可用性,那么就会增加多个服务节点,而节点增加的越多,数据一致性就会越来越差,只有节点越少时,数据一致性才最好保证,所以 C 和 A 是互斥的,故也就不能同时满足 C、A、P 三种条件了。
因为 C 和 A 的互斥,所以在设计分布式系统时,普遍考虑的是:
满足 AP,即可用性和分区容错性,放弃一致性,但是也不是完全放弃一致性,而是追求最终一致性,就是在某个节点数据有更新之后,不要求每个节点立马都要查询出最新的数据,而是允许每个节点数据的暂时不一致,在用户接受的时间范围内,更新每个节点的数据使其达到最终一致性即可。
满足 CP,放弃可用性,加强一致性和分区容忍性,一些强一致性要求的系统按 CP 进行设计,比如跨行转账,一次转 账请求要等待双方银行系统都完成整个事务才算完成。 说明:由于网络问题的存在 CP 系统可能会出现待等待超时,如果没有处理超时问题则整理系统会出现阻塞。
在分布式系统设计中 AP 的应用较多,即保证分区容忍性和可用性,保证数据的最终一致性。比如:订单退款,退款即刻成功,但是钱要几个小时后或者几天之后到账,只要在用户接受的时间内走完事务流程即可。
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/e4470fb13372696c765b02e8a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论