架构师训练营 - 命题作业 第 6 周

发布于: 2020 年 07 月 15 日

1、请简述CAP原理

答:

CAP原理常用于分布式系统的设计理论基础和指标,

先说P:

  • Partition tolerance:分区耐受性,也就是分布式系统中任意节点失效、或通讯失效,都能依旧提供服务;我理解是只要是分布式系统,就必须满足P,如果不能满足,相当于单个节点,也就不算分布式系统了。

  • Consistency:一致性,指在写入数据后能立即得到数据的最新值,也就是说在任意时刻,所有节点返回的数据必须是一致的,而且是最新的。

  • Availability:可用性,用户的每次请求,都必须返回响应,而不能返回错误响应或失去响应,但是它不要求返回的是最新数据。

根据以上定义,我们知道,对于分布式系统,可以认为P是必须成立的,

如果在部分节点失效,再恢复时,数据可能不一致,那么在这种情况下:

  • 保证节点的数据一致性,那么系统就要等待节点恢复,失去了可用性;

  • 保证系统的可用性,那么恢复的节点就可能返回旧数据,失去了一致性。

因此,我们认为,分布式系统要么实现CP,要么实现AP,不可能三者同时满足。

举个例子:

  • 银行跨系统转账,涉及金额,要求强一致性:

张三从A行转账1000元给B行的李四,存在2个操作,张三转出,李四转入。

如果张三转出后,指令发给了B行,但是没收到回应时,网络断了,那么:

因为要保证强一致性,那么就要等待一定时间,如果网络恢复,就继续操作,网络无法恢复,就返回超时,并回滚操作,失去了可用性。

  • CDN保存图片,一般不要求强一致性,但是要保证可用性:

如果在更新图片到一半时,网络中断了,部分节点得到的是旧图片,此时为了保证可用性,允许这种情况的发生,等网络恢复后,再继续更新图片即可。

发布于: 2020 年 07 月 15 日 阅读数: 4
用户头像

水边

关注

还未添加个人签名 2019.04.14 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 命题作业 第 6 周