Homework- CAP 原理和 Doris 临时失效处理 UML 图
请简述 CAP 原理。
针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)。
CAP原理
C:Consistency 一致性,每次读取的都应该是最近一次写入的数据或者返回错误,而不是过期的数据。
A:Availability 可用性,每次请求都要返回一个响应,而不是返回错误或者无响应,不过返回的结果不要求是最近一次写入的,可以是过期的数据。
P:Partition tolerance 分区容错性,即使因为网络原因服务器之间节点通信丢失或者延迟,系统也需要依然是可以操作的。
如何理解CAP原理:
在现实世界中,网络分区失效是一定会发生的,所以分区耐受性是一定要保证的;而系统的可用性和一致性是存在逻辑上互斥的关系,根本无法同时满足。
所以,当网络分区失效(节点间通信丢失或者网络延迟)发生时:
要么取消操作,保证数据一致性,系统就返回一个错误码或者超时,但是这样系统就不可用了;
要么继续写入数据,但是节点之间的数据可能不一致,导致读取的数据可能不是最新,数据一致性无法保证。
CAP原理,总结来说,在分布式系统必须满足分区容错性的前提下,可用性和一致性无法同时满足。
目前大部分分布式系统采用的AP(保证可用和分区容错性)+ 保证数据最终一致性的方案。
最终一致性一般有以下几种来解决一致性冲突:
最终一致写冲突:记录时间戳,当数据在不同节点间扩散时,按照时间先后顺序覆盖最新的结果。
客户端冲突解决:比如在不同的节点上操作购物车,就可以采用合并的方法,数据扩散时将所有节点的数据合并在一起是可以的。
投票解决冲突(Cassandra):
写数据时,向所有节点写数据,需要等待多数节点写入成功。
读取数据时,以返回相同数据的节点数多的为准。
Doris 临时失效时序图
版权声明: 本文为 InfoQ 作者【River Tree】的原创文章。
原文链接:【http://xie.infoq.cn/article/6a4d3e36ba2cbb6664b58981f】。文章转载请联系作者。
评论