美文网首页
架构师训练营第6周作业 CAP

架构师训练营第6周作业 CAP

作者: 浩哥有料 | 来源:发表于2020-07-15 22:35 被阅读0次

    1. 请简述CAP原理

    CAP原理是用来描述分布式数据存储系统的一个定理,CAP三个字母分别代表Consistency(一致性)、Avaliability(可用性)、Partition Tolerance(分区容错性),这三个特性有效抽象了分布式数据存储系统的特点。

    关于一致性,一种说法是分布式数据存储系统中的各个存储节点在任意时刻都持有一致的、最新的、正确的数据,从读操作的角度来说也就是用户在任意时刻访问任意一个节点都能的到正确的数据,从写操作的角度来说也就是用户对任意一个节点上的数据进行更新都能同时同步到分布式系统中的其他节点上。这种说法相对来说比较理想化,而另一种说法则考虑到了数据不正确的情况,指出为了保证一致性,如果节点中存储的数据不是最新的、正确的,那么它应当返回错误提示,即拒绝响应,但这种说法仅限于读操作。

    可用性指的是分布式系统始终处于可用的状态,也就是始终能够响应用户的请求。它与一致性的第二种说法正好相反,即一定会返回结果,但不要求结果是最新的。很显然,这种描述也是针对读操作。

    分区容错性指的是当分布式系统中存在网络失效,导致整个系统出现分区的时候,仍然能够响应用户的请求。

    从现实的角度来说,网络分区现象在分布式系统中是无法避免的,如果不能满足分区容错性,那么分布式系统也就失去了存在的意义,因此在分布式系统中P是一定要满足的。

    当网络分区发生的时候,分布式系统中各个节点之间的网络连接出现了故障,因此无法满足数据的实时同步,那么这些节点在响应用户请求的时候,要么返回的是不一致的数据,要么拒绝响应,也就是说,在网络分区的情况下,C和A是彼此互斥的,无法同时满足,这也就是CAP原理所描述的事实:在一个分布式数据存储系统中,C、A和P最多只能同时满足两个。而由于现实中P无法避免,因此实际上分布式系统只能在CP和AP之间做出选择。

    CP系统保障了一致性,而牺牲了可用性,这适用于对一致性要求高的系统,例如金融、支付相关的系统,为了满足CP,那么用户就可能会收到“请求失败”之类的拒绝服务错误,这对用户体验来说会产生影响,但是系统确保了数据的准确无误,直到网络恢复后,数据同步完成,所有节点的数据一致,才能继续为用户提供服务。AP系统正好相反,以用户体验为重,确保用户的请求能够得到及时响应,但响应的结果可能不是正确的。在对于一致性要求不那么高的场景中,例如微博、商品详情等等,AP系统能够更好地留住用户。

    在上文的描述中提到了“网络恢复后”,不难发现,当网络恢复后,也就是网络分区消失的情况下,CA是可以同时满足的,也是应当同时满足的。因此,CAP原理的完整描述应该是:一个分布式系统在正常情况下应当同时满足CA,而在发生网络分区的情况下只能选择满足C或A之一。

    2. 针对 Doris 案例,请用 UML 时序图描述 Doris 临时失效的处理过程(包括判断系统进入临时失效状态,临时失效中的读写过程,失效恢复过程)

    Doris临时失效.jpg

    相关文章

      网友评论

          本文标题:架构师训练营第6周作业 CAP

          本文链接:https://www.haomeiwen.com/subject/aufshktx.html