分布式
文章推荐
CAP理论
阿里二面:什么是 CAP 定理 ?为什么CAP原则不能同时被满足?只能三选二 ?_哔哩哔哩_bilibili
一致性(Consistency):分布式系统中的所有数据再同一时刻都是同样的值,分为强一致性、弱一致性、最终一致性
可用性(Availability):读写任何时间都能成功,且不会出现超时或失败。
分区容错性(Partition tolerance):分布式系统在遇到任何网络分区故障的时候*,仍然能够*对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。简而言之,一个节点挂了不影响其他另外的节点对外服务
分区指的是分布式系统可能出现的区域网络不通
那么满足分区容错的基础上,能不能同时满足一致性和可用性?
(1)假设我们优先 保证一致性
假设有两个节点 N1 和 N2。当我们向 N1 写入数据时,为了确保全局一致性,必须让 N2 的读写操作暂时“冻结”。
只有当 N1 完成数据同步至 N2 后,N2 才能恢复处理读写请求。在此期间,客户端针对 N2 的请求要么会收到失败响应,要么会因等待超时而得不到及时反馈。
这意味着,在追求强一致性的过程中,N2 的可用性不可避免地受到了影响,因为它无法始终如一地对所有请求提供即时响应。
(2)再来看看优先 保证可用性 (A)
这次,我们不让 N2 的读写操作暂停。即使 N1 正在进行数据写入,N2 也继续处理客户端的请求。但这样一来,N2 可能会基于过时数据作出响应,导致客户端接收到与全局最新状态不一致的结果。
显然,这种情况下,虽然我们保证了 N2 的高可用性(即对所有请求都有响应),却牺牲了数据的一致性。