架构师训练营第 6 周作业
请简述 CAP 原理。
针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)。
请简述 CAP 原理
CAP定义
CPA由计算机科学家Eric Brewer提出,是分布式系统的三个指标:
- Consistency
- Availability
- Partition tolerance
理论指出,在分布式系统中,这三个指标不可能同时满足。
Consistency
Consistency是一致性,每个读请求都要返回最新的状态或者一个错误,这就要求在某个节点更新状态时,要同步到所有的节点。当节点间出现网络故障时,就会导致同步失败,无法保证一致性。
Availability
Availability是可用性,要求分布式系统,无论向哪个节点请求,都能够做出响应,而无论这个节点的状态是否是最新的。当某个节点出现故障的时候,请求这个节点将会报错,需要有切换机制切换到可用节点,在切换期间无法保证可用用性。
Partition tolerance
Partition tolerance是分区耐受性。因为网络原因,部分节点可能消息丢失或者延迟,系统依然应该是可以继续使用的。
保证分区耐受性,一致性和可用性无法同时满足
在分布式系统中,分区耐受性是基本要求,是必须满足的。在分区耐受性满足的前提下,一致性和可用性无法同时满足,两者是矛盾的。
如果一个节点同步因为网络原因失败,这个节点的状态无法满足一致性;要保证一致性就要在同步没完成访问失败处理,这样就无法满足可用性。
在大型网站的设计中,往往是选择可用性来保证访问,某种程度上放弃一致性。一般来说,数据不一致的情况通常出现在高并发写操作或者集群状态不稳(故障恢复,集群扩容等)的情况下,应用系统需要对分布式数据处理系统的数据不一致性有一定的了解并进行某种意义上的补偿工作,以避免应用出现数据不正确。
数据一致性在这情况下可以分为以下几种情况:
数据强一致
各个副本中的数据总是强一致的。这种设计正确性很高,但是会在一定程度上损耗性能。
数据用户一致
应用访问数据时通过一定的纠错和校验机制,把多个数据可能不一致的副本的数据综合计算返回一个一致且确定的数据给用户。大型互联网架构一般采用这种设计,性能较好,并且数据不会出现错误。
数据最终一致
物理存储的数据不一致,用户访问得到的数据也可能不一致,但经过一段时间的自我修正(通常很短时间),数据会达到最终一致。该设计性能最高,但可能有数据错误。
因为很难去同时满足CAP,大型网站通常会综合成本、技术、业务场景等条件,结合应用服务和其它的数据监控与纠错功能,使存储系统达到用户一致,保证用户最终访问数据的正确性。
评论