架构训练营第六周作业

用户头像
一期一会
关注
发布于: 2020 年 11 月 29 日

作业:



请简述 CAP 原理



解答:

CAP原理阐述的是,在一个分布式的系统里面,C,A,P代表的三个特性只能同时满足两个。

三种特性



C: 代表一致性,要求数据在每一个分区都是一致的。读取要么得到最新的数据,要么返回错误。如果返回和最新数据不一致的数据,就不能满足该特性。



A: 代表可用性,和一致性的(可以返回错误)是矛盾的,要求每次请求,系统都应该返回响应。可用性不要求返回的响应一定是最新的,所以如果返回过期数据,也算是满足可用性。但是这样又不满足一致性。



P:代表分区耐受性,服务器经常会因为网络等原因,导致节点间通讯收到影响。该特性要求,即使发生了通讯上的消息丢失,延迟等情况,系统依然可以正常操作。



为何只能三选二?

因为分布式系统各节点之间需要使用网络通信。而网络通信是必然会在一定的时候出现问题的。这时候,一致性和可用性就不能同时满足。

根据一致性、可用性的描述,我们知道只有成功地返回最新的数据这一种情况是同时满足二者的。

如果有节点通讯发生问题,我们想满足一致性,因为不能把最新的数据成功写入所有节点(也就有的节点可能存在过期数据),只能考虑返回错误,这就不满足可用性。而如果考虑返回各节点自己存储的数据来满足可用性,一致性就满足不了了。

三选二

满足一致性,可用性

如果选择C和A,不满足P,也就是说分区耐受性不满足,这通常不会作为分布式系统的选择。因为既然是分布式系统,网络通信失败是必然会发生的。如果发生了网络通信失败,系统就失去响应,这是不能接受的。而我们设想如果没有网络通信失败,那只能发生在单机系统,这样就不是分布式系统了。



满足一致性,分区耐受性

这样的选择表示,及时对响应返回错误(不满足可用性),也必须保证一致性。这种情况通常发生在系统一致性非常重要的情况,比如银行ATM机的系统,如果是分布式系统,就必须要求强一致。即使返回交易失败,也不能牺牲一致性。



满足可用性,分区耐受性

一般的分布式系统考虑这种方式。比如,发布一张网页到 CDN,多个服务器有这张网页的副本。后来发现一个错误,需要更新网页,这时只能每个服务器都更新一遍。

一般来说,网页的更新不是特别强调一致性。短时期内,一些用户拿到老版本,另一些用户拿到新版本,问题不会特别大。当然,所有人最终都会看到新版本。所以,这个场合就是可用性高于一致性。

发布于: 2020 年 11 月 29 日阅读数: 58
用户头像

一期一会

关注

还未添加个人签名 2018.01.08 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营第六周作业