架构师训练营 - 命题作业 第 6 周
1、请简述CAP原理
答:
CAP原理常用于分布式系统的设计理论基础和指标,
先说P:
Partition tolerance:分区耐受性,也就是分布式系统中任意节点失效、或通讯失效,都能依旧提供服务;我理解是只要是分布式系统,就必须满足P,如果不能满足,相当于单个节点,也就不算分布式系统了。
Consistency:一致性,指在写入数据后能立即得到数据的最新值,也就是说在任意时刻,所有节点返回的数据必须是一致的,而且是最新的。
Availability:可用性,用户的每次请求,都必须返回响应,而不能返回错误响应或失去响应,但是它不要求返回的是最新数据。
根据以上定义,我们知道,对于分布式系统,可以认为P是必须成立的,
如果在部分节点失效,再恢复时,数据可能不一致,那么在这种情况下:
保证节点的数据一致性,那么系统就要等待节点恢复,失去了可用性;
保证系统的可用性,那么恢复的节点就可能返回旧数据,失去了一致性。
因此,我们认为,分布式系统要么实现CP,要么实现AP,不可能三者同时满足。
举个例子:
银行跨系统转账,涉及金额,要求强一致性:
张三从A行转账1000元给B行的李四,存在2个操作,张三转出,李四转入。
如果张三转出后,指令发给了B行,但是没收到回应时,网络断了,那么:
因为要保证强一致性,那么就要等待一定时间,如果网络恢复,就继续操作,网络无法恢复,就返回超时,并回滚操作,失去了可用性。
CDN保存图片,一般不要求强一致性,但是要保证可用性:
如果在更新图片到一半时,网络中断了,部分节点得到的是旧图片,此时为了保证可用性,允许这种情况的发生,等网络恢复后,再继续更新图片即可。
版权声明: 本文为 InfoQ 作者【水边】的原创文章。
原文链接:【http://xie.infoq.cn/article/c52445eafda972ef8e916fa75】。文章转载请联系作者。
评论