下面两题,至少选做一题

    • 请简述 CAP 原理。

    image.png

    CAP指C(Consistency)一致性,A(Availablity)可用性,P(Partition Tolerance)分区容错性。

    • 一致性:每次读取的数据都应该是最近写入的数据或者返回一个错误,而不应该过期的数据。
    • 可用性:每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,不过这个响应不需要保证数据是最近写入的。
    • 分区耐受性:即时因为网络原因,部分服务器节点之间消息丢失或者延迟了,系统依然是可以操作的。

    核心是一个分布式系统不可能同时满足CAP三个需求,最多只能满足其中的两个,而其中P是大多数场景下要满足的,所以大多数情况下,分布式系统要考虑的问题就是保证A还是C。

    理解CAP理论的最简单方式是想象两个节点分处分区两侧。 允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。 如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。 除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。