写点什么

分布式事务 -CAP 理论

作者:zarmnosaj
  • 2022-10-21
    四川
  • 本文字数:927 字

    阅读完需:约 1 分钟

CAP 理论是什么

分布式事务处理的理论基础就是 CAP,CAP 指的是:设计分布式系统时需要考虑 3 个方面,分别是:一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance),并且分布式系统最多满足两个方面,无法同时满足三种条件。

CAP 释义:

一致性(Consistency):假设服务有多个节点,每个节点都存储了用户数据, 那么每个节点的数据需要保持同一时刻数据一致,这叫一致性。


可用性(Availability):当服务只有一个节点时,节点发生宕机,那么系统就会无法对外提供服务,而假设服务有多个节点,其中一个结点宕机不影响整个集群对外提供服务,故增加服务的节点个数,是为了保证系统的可用性。


分区容错性(Partition Tolerance):分区容忍性就是允许系统通过网络协同工作,例如,将数据库拆分为多个不同的数据库,并且将每个数据库分别部署在不同的地区、不同的网络,这样即使在某个地区发生网络波动或者网络断开时,其他地区的数据库还能继续提供服务,这就叫分区容错性。

CAP 三选二

为什么分布式系统不能同时满足 C、A、P 呢?


因为在保证分区容忍性的前提下,一致性和可用性无法同时满足,如果要保证系统的可用性,那么就会增加多个服务节点,而节点增加的越多,数据一致性就会越来越差,只有节点越少时,数据一致性才最好保证,所以 C 和 A 是互斥的,故也就不能同时满足 C、A、P 三种条件了。


因为 C 和 A 的互斥,所以在设计分布式系统时,普遍考虑的是:


  1. 满足 AP,即可用性和分区容错性,放弃一致性,但是也不是完全放弃一致性,而是追求最终一致性,就是在某个节点数据有更新之后,不要求每个节点立马都要查询出最新的数据,而是允许每个节点数据的暂时不一致,在用户接受的时间范围内,更新每个节点的数据使其达到最终一致性即可。

  2. 满足 CP,放弃可用性,加强一致性和分区容忍性,一些强一致性要求的系统按 CP 进行设计,比如跨行转账,一次转 账请求要等待双方银行系统都完成整个事务才算完成。 说明:由于网络问题的存在 CP 系统可能会出现待等待超时,如果没有处理超时问题则整理系统会出现阻塞。


在分布式系统设计中 AP 的应用较多,即保证分区容忍性和可用性,保证数据的最终一致性。比如:订单退款,退款即刻成功,但是钱要几个小时后或者几天之后到账,只要在用户接受的时间内走完事务流程即可。

发布于: 刚刚阅读数: 4
用户头像

zarmnosaj

关注

靡不有初,鲜克有终 2020-02-06 加入

成都后端混子

评论

发布
暂无评论
分布式事务-CAP理论_10月月更_zarmnosaj_InfoQ写作社区