CAP 原理及 Doris 临时失效的处理过程
CAP 原理
对于这样一个简单的分布式环境来说,数据在不同的服务器上有副本冗余,并且同步复制,保持数据同步。
选择了系统可用性,A(Availability)
某天用户先访问了服务器 A,写入了数据,但这个时候服务器 A 的网络突然出现了故障,那么会出现以下情况:
用户访问的时候负载均衡找不到服务器 A,用户的下一次访问就会被转到服务器 B 上。
数据的同步复制也找不到 A,用户刚刚写入的数据也无法同步到服务器 B 上的数据库。
等网络故障恢复之后,数据同步会继续,最终数据恢复一致。
这种情况下,我们认为系统能提供服务就好,数据的不一致是可以忍受的。
选择了系统一致性,C(Consistency)
如果我们系统的数据非常重要,数据不一致会带来严重的后果,如果服务器 A 的网络故障,那么服务器 B 上的所有相关功能都必须关停 ,必须等到服务器 A 的网络恢复并且数据同步完成才能恢复功能可用,那么会出现的情况是:
1:用户访问会中断,返回错误,等到系统恢复才能继续访问。
那么分区容错性,P(Partition tolerance)又是什么呢
在分布式的环境下,节点之间的网络无法通讯,产生了网络分区,但是整个系统还是可用的,这就是分区容错性。
综上我们可以得出:
如果选择可用性(A) + 分区容错性(P), 就要放弃一致性(C)。
如果选择一致性(C) + 分区容错性(P), 就得放弃可用性(A)。
如果选择一致性(C) + 可用性(A), 就得放弃分区容错性(P)。
如果选择 CA,放弃 P 这就不是分布式系统了,变成了单机应用,也就没有意义了
所以,在一个分布式系统中, 在出现节点之间无法通信, 你只能选择可用性或者一致性,没法同时选择他们。
Doris 临时失效的处理过程
判断系统进入临时失效状态
临时失效中的读写过程
失效恢复过程
评论