架构训练营 -week6- 作业

架构训练营week6课后作业
作业一(至少完成一项):
请简述 CAP 原理。
针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)。
1. 请简述CAP原理
CAP理论主要针对的是分布式系统,CAP分别表示:
Consistency 一致性
Availability 可用性
Partition Tolerance 分区容错性
CAP理论最关键的一个论点就是:在一个系统中,最多只能同时满足CAP3个特性中的2个,不能3个同时满足。对于分布式系统而言,由于必须满足分区容错性P,那么系统在设计时,就只能在可用性A、一致性C之间做出取舍。这个结论也经常用如下形式的图来表示。

该理论模型最有价值的地方在于,既然我们知道了CAP理论,那么我们在设计一个分布式系统时,就不用再去耗费精力尝试设计一个同时满足C、A、P的系统,因为已经证明这是不可能的,我们只需要选取其中的两个目标作为系统的设计目标。
下面简单列举下常见分布式系统对于CAP理论的支持:

2. 用 UML 时序图描述 Doris 临时失效的处理过程
注:由于时间不太充裕,apache doris源码没法一一推敲,只能根据课上讲解内容、自己的一些猜测来画序列图,尽量保证逻辑上是能走通的。
说明:下面图中
应用服务器:读写数据的客户端
存储服务器1:一直正常的服务端
存储服务器2:发生故障、又恢复的服务端
仲裁服务器:判断服务端是否失效
临时服务器:发生临时失效时的备份服务器
1、系统判断进入临时失效
下面这过程中,如果"应用服务器写入存储服务器"这个过程,不是由客户端自己去找出需要写的两个服务器,而是采用类似kafka的思路,只写入一个leader、由这个leader自己去负责写入多个副本,那序列图就又不一样。
不过从已有的ppt、文档来看,下图应该是比较贴近实际的。

2、临时失效中的读写过程
临时失效的服务器不参与正常读写。

3、失效恢复过程
恢复过程:
1、恢复后,写操作会同步写给已恢复的服务器;
2、临时服务器中已保存的内容会同步给已恢复的服务器,所有同步操作完成后,会告知仲裁服务器,然后就可以恢复到正常读写。

版权声明: 本文为 InfoQ 作者【于成龙】的原创文章。
原文链接:【http://xie.infoq.cn/article/71c116240f20a888704a1c97a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论