14

面试官:CAP 都搞不清楚,别跟我说你懂微服务

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzIyODc2MDgxOA%3D%3D&%3Bmid=2247485319&%3Bidx=1&%3Bsn=516a43347221145c58c3645a2f4cce77&%3Bchksm=e84c4a1adf3bc30cc83ab16b94fd2e44074aeb7ef7187fdcad2e50c4419a1b07a3237a94e123&%3Bsessionid=0&%3Bscene=126&%3Bsubscene=0&%3Bclicktime=1593001301&%3Benterid=1593001301&a=
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

7re6fiB.gif

CAP理论指在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。

Nbe2ayi.jpg!web

faaUZjz.jpg!web

aYBZfyn.jpg!web

i63Mbm.jpg!web

让我们想象一个简单的分布式系统,它由G1和G2两个节点组成的,这两个节点都存有相同的变量V且初始值都是V0,如下图

FjIbaae.jpg!web

客户端Client可以向任何一个节点发出读写请求,当节点收到该请求,经过计算返回相应的应答,如写数据操作

yiEVJnz.jpg!web

读数据操作如下

aU3UFbN.jpg!web

UrMzimj.jpg!web

AZFRriF.jpg!web

2UraAvZ.jpg!web

uAzy2av.jpg!web

QzaqyuA.jpg!web

分区容错性P

The system will continue to function when network partitions occur.

当网络出现分区后,系统能够继续履行职责。

reUnmuY.jpg!web

nyUfuu3.jpg!web

一致性C

A read is guaranteed to return the most recent write for a given client. 

对某个指定的客户端来说,它的读操作保证能够返回最新的写操作结果。如下

r2yym2I.jpg!web

rYNv2eJ.jpg!web

节点G1在应答client之前,先把数据同步给G2节点,当client从G2读取时就已经是最新的数据了,从而达到了数据的一致性。

可用性A

A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout).

非故障节点将在合理的时间内返回合理的响应,但不能是错误响应或超时。

iaIbYrV.jpg!web

zyIJb2V.jpg!web

第一阶段,client向节点G1发出写操作请求,数据是v1。由于网络分区,导致G1无法把数据同步给G2节点,如果此时满足可用性A,client向节点G2发出读操作请求,如下图

YrMriqR.jpg!web

由于满足可用性A则G2返回给client的数据是v0,则不满足一致性C。如果需要满足一致性C,则失联的G2暂时不可用,直到网络恢复并同步数据完成方可。

2IVFjmz.jpg!web

本文部分内容参考并翻译于

https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/

zuimIzE.png!web

End

版权归@码农神说所有,转载须经授权,翻版必究

转载可联系助手,微信号:codeceo-01

往期精彩

JfymuaE.jpg!web

扫码关注我们

码农神说

一个让你远离抑郁的公众号

ue2I3in.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK