面试官:说说分布式的CAP定理?

栏目: 后端 · 发布时间: 5年前

内容简介:CAP定理又称布鲁尔定理,是计算机科学家 Eric brewer 提出的,是分布式系统领域的一个定理。若想设计一个分布式架构的系统,掌握这项定理不可或缺。**C是Consistency,也就是一致性,在CAP中的是强一致性。A是Availability ,可用性。P是Partition tolerance,分区容错性。在分布式系统中三者不可兼得,只能选两个。这就是CAP定理。**例如你保证了一致性和分区容错性就无法保证可用性。
面试官:说说分布式的CAP定理?

CAP定理又称布鲁尔定理,是计算机科学家 Eric brewer 提出的,是分布式系统领域的一个定理。

若想设计一个分布式架构的系统,掌握这项定理不可或缺。

**C是Consistency,也就是一致性,在CAP中的是强一致性。A是Availability ,可用性。P是Partition tolerance,分区容错性。在分布式系统中三者不可兼得,只能选两个。这就是CAP定理。**例如你保证了一致性和分区容错性就无法保证可用性。

面试官:说说分布式的CAP定理?

Consistency

这里的一致性是强一致性,强一致性的意思就是例如节点A更新了数据,节点B能同时更新,这样客户端在每次读取获得数据都是最近更新的。但是 在定理中是忽略掉我们平日里的网络延迟的 。现实情况网络延迟在现在还是无法避免的,所以我们只能实现最终一致性,但是目标还是贴近强一致性,也就是尽力降低延时的时间。

Availability

可用性指的是非故障的节点需要在合理的时间返回合理的响应。合理的响应的意思也就是不能搞个报错,不能是超时失败。举个例子比如说节点A更新了数据,同时要发布到节点B上,但是中间传输的电缆被挖掘机挖断了,此时用户去访问节点B,此时节点B应该返回老的数据,而不应该报错。这就是可用性。让用户感觉系统还是能用的。

Partition tolerance

分区容错性,指的是当网络分区了,系统还能正常的运行和响应。比如节点A和节点B无法通信,你要考虑这个时候系统如何应该。虽然网络分区的概率低而且时间短但是这种情况是会发生的。所以理论上是牺牲C或者A,P是一定要达到的。

举个例子,把P扔了。所以此时系统需要保证CA,然后此时发生了网络分区,节点A和B无法通信了,此时客户端想要往节点A写入数据,但是因为此时无法同步数据至节点B。所以只有保证A不写入因此才能保证一致性。那你不让客户端往A写数据,你就只能报个错返回给客户端,说此时不能写,那是不是违反了可用性了?

所以在分布式系统中P是一定要保证的。所以在分布式系统中是CP,AP这样搭配的。

那CA呢?请注意, CAP所说的CAP三者只能存在两者,所以CA是可以能搭配的。就是在系统没有P的时候,CA搭配。也就是说当系统不存在分区情况的时候要满足C和A,当系统出现分区情况的之后视情况抛弃C或者A。

注意

CAP理论不是系统级别的,是数据级别的。啥意思呢?

也就是说当出现网络分区的情况,你可以一部分数据遵守CP,一部分数据遵守AP。例如用户注册场景可以上CP,保证用户注册之后登录的成功。而用户更换头像这种就上AP,毕竟用旧的数据影响也不会很大。

因此我们要根据不同的业务场景来选择不同的应对方案。CAP是可以灵活搭配的

如有错误欢迎指正! 个人公众号:yes的练级攻略


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Collective Intelligence

Programming Collective Intelligence

Toby Segaran / O'Reilly Media / 2007-8-26 / USD 39.99

Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the......一起来看看 《Programming Collective Intelligence》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具