第六周命题作业
1.请简述 CAP 原理。
解答:
C:Consistency 一致性
A:Availability 可用性
P:Tolerance of newwork Partition 分区容忍性
CAP 原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。而对于分布式系统而言,分区容忍性是基本要求,否则就失去了价值。因此设计分布式数据系统,就是在一致性和可用性取一个平衡。对于多数 WEB 应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是多数分布式数据库产品的方向。
当然,牺牲一致性,并不是完全不管数据数据的一致性,否则数据是混乱的,那么系统的可用性再高,分布式再好也没有价值。牺牲一致性,只是不在要求关系型数据库中的强一致性,而是系统能达到最终一致性即可,考虑到客户体验,这个最终一致的时间窗口,要尽可能对用户透明,也就是需要保障“用户感知到的一致性"。通常是通过数据库的多份异步复制来实现系统的高可用和数据的最终一致性的,”用户感知到的一致性“的时间窗口则取决于数据复制到一致状态的时间。
最终一致性(EVENTUALLY CONSISTENT):对于一致性,可以分为从客户端和服务端两个不同的视角。从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一直,一致性是因为有并发读写才有的问题,因此在理解一致性的问题,一定要主要结合考虑并发读写的场景。
从客户端的角度,多进程并发访问时,更新过的数据在不同的进程如何获取不同策略,决定了不同的一致性。对于关系性数据库,要求更新过的数据能被后续的访问都按倒,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性。
2.针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统 进入临时失效状态,临时失效中的读写过程,失效恢复过程)。
【系统架构图】
![](https://static001.geekbang.org/infoq/d1/d1308a0c13ffee2e7a4102b1f5ae0b23.png)
【临时失效状态时序图】
![](https://static001.geekbang.org/infoq/09/0982485437c49bfc4326ae8b5172c8eb.png)
【读写过程及恢复过程时序图】
![](https://static001.geekbang.org/infoq/73/7317d99924154913f21e05066cfb0e9c.png)
评论