CAP
2020-08-14 本文已影响0人
乌鲁木齐001号程序员
CAP 理论中的 C 和 A
- C 和 A 都是服务端对客户端读的不同承诺;A 承诺什么时候读都能读到数据,但是读到的数据有可能不是最新的;C 承诺的是每次读到的数据都是最新写入的值,要么就是读取失败;
- 这里的 C 不是状态一致性,状态一致性是说,在客户端读的那一个时刻,数据在不同副本之间的值是一模一样的;
- CAP 理论在提出的时候,C 指的是状态一致性,此时理论还没被证明;
- CAP 理论在被证明的时候,将 C 限制在了原子一致性(线性一致性),这样的限制换句话说,就是对客户端的承诺;我只承诺返回给客户端读请求的数据要么是最新写入的数据,要么返回失败;比如 Kafka 的 ISR,读写都在 Leader 上,响应给客户端读请求的数据要么就是最新的,要么就是返回失败,客户端在读的那一瞬间,数据可能还没同步给所有的 Follower 节点;
- 即使在没有发生网络分区的情况下,对 C 实现的越好,对 A 的实现就越差;C 实现到头了就是状态一致性(分布式事务 ACID),这是 CAP 理论被提出时 C 的含义;