Consistency ( C )
- 当某些操作使数据发生变化后,随后的操作(比如读取操作)也应该满足(二选一),从而保证一致性:
- 使用变化后的值
- 或服务不可用,收到一个错误响应
Availability ( A )
- 在分布式系统中,不管请求哪个节点,都应该能够正常都响应,这就实现了可用性保证(但是不一定返回的就是最新的数据)。
Partition tolerance ( P ) 分区容忍性
- 在任意分区网络故障的情况下,系统仍然继续运行。(对于分布式系统,总是无法保证节点之间的通信总是正常的。所以,除非是 centralized system,否则,P 无法避免。)
CP: 业务需要原子性读、写
AP: 业务要求满足最终一致性即可,或业务场景要求即便是发生了外部错误,也要继续运行
- 由于 P 不可避免,所以,当网络分区发生后,我们只能在 CP、AP 之间作出选择。
- Eventual Consistency 最终一致性:在 A 和 C 方面做了一个很好当平衡