分布式事务 CAP

CAP

Posted by lijian on July 10, 2019

简介

CAP 定理,又称布鲁尔定理。C、A、P 不可能同时达到,这就是CAP理论

在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲

  • C: Consistency 一致性

    “A read is guaranteed to return the most recent write for a given client.” 对某个指定的客户端来说,读操作保证能够返回最新的写操作结果 。

  • A: Availability 可用性

    “A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout)” 非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)

  • P: Partition tolerance 分区容错性

    “The system will continue to function when network partitions occur.” 当出现网络分区后,系统能够继续“履行职责”

再理解

CA,CP,AP,CAP。分区容错必须保证,因为网络本身无法做到100% 可靠,有可能出故障,所以分区是一个必然现象. 也就是我们可选 AP,CP,CAP。如果我们选择了CA,当发生网络分区时,必须保证C,系统就会禁止写入,这就会违背了A,所以理论上我们不能选择CA 架构,CAP理论告诉我们,CA无法同时满足,我们可选AP,CP。

如果满足一致性,数据写入node1 必须要写入node2,这个时候就要对node2 的状态进行锁定来同步写,node2 的用户必须等待,这就不满足了可用性。 同理如果满足可用性,必须牺牲一致性。

对于数据严格要求一致的,我们必须CP,即使是要报错都必须满足。

对于可容忍的,我们可以AP,采用后续补偿方式满足C。(可能需要人工介入补偿)

三取二,不是放弃第三点,而是为第三点做一些防备措施或者冗余方案。

巨人的肩膀

想成为架构师,你必须知道CAP理论

想成为架构师,你必须掌握的CAP细节