分布式系统理论基础2 :CAP

  • 时间:
  • 浏览:1
  • 来源:万人炸金花IOS_万人炸金花APP下载

CAP定理证明中的一致性指强一致性,强一致性要求多节点组成的被调不可不还可以 像单节点一样运作、操作具备原子性,数据在时间、时序上都是要求。但会 放宽哪此要求,还有某些一致性类型:

工程实践中,较常见的做法是通过异步拷贝副本(asynchronous replication)、quorum/NRW,实现在调用端看来数据强一致、被调端最终一致,在调用端看来服务可用、被调端允许每项节点不可用(或被网络分隔)的效果[15]

对于分布式系统工程实践,CAP理论更要花费的描述是:在满足分区容错的前提下,没办法 算法能一齐满足数据一致性和服务可用性[11]

CAP定理

It is impossible for a web service to provide the three following guarantees : Consistency, Availability and Partition-tolerance.

延时与数据一致性也是一对“冤家”,但会 要达到强一致性、多个副本数据一致,必然增加延时。换成延时的考量,亲们得到有有另4个 多多CAP理论的修改版本PACELC[17]:但会 出現P(网络分区),怎样在A(服务可用性)、C(数据一致性)之间选者;但会 ,怎样在L(延时)、C(数据一致性)之间选者。

该猜想在提出两年后被证明成立[4],成为亲们熟知的CAP定理:

在某时刻但会 满足AP,分隔的节点一齐对外服务但没办法 相互通信,将导致 具体情况不一致,即没办法 满足C;但会 满足CP,网络分区的具体情况下为达成C,请求没办法 老会 停留,即不满足A;但会 要满足CA,在一定时间内要达到节点具体情况一致,要求没办法 出現网络分区,则没办法 满足P。

网络分区的具体情况符合该定义,网络丢包的具体情况也符合以上定义,另外节点宕机,某些节点发往宕机节点的包也将丢失,例如 具体情况同样符合定义。现实具体情况下亲们面对的是有有另4个 多多不可靠的网络、有一定概率宕机的设备,这有有另4个 多多因素总可导致 Partition,因而分布式系统实现中 P 是有有另4个 多多时要项,而都是可选项[9][10]

CAP的工程启示

小结

微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站。(关注公众号后回复”Java“即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容富足,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java守护系统进程员面试指南等干货资源)

CAP理论对实现分布式系统具有指导意义,但CAP理论并没办法 涵盖分布式工程实践中的所有重要因素。

CAP理论看似给亲们出了一道3选2的选者题,但在工程实践中位于没办法 来越多现实限制条件,时要亲们做更多地考量与权衡,处置进入CAP认识误区[7]

可用性在CAP定理里指所有读写操作时要不可不还可以 终止,实际应用中从主调、被调有有另4个 多多不同的视角,可用性具有不同的含义。当P(网络分区)出現时,主调都时要只支持读操作,通过牺牲每项可用性达成数据一致。

有非常非常多文章讨论和研究CAP理论,希望这篇对你认识和了解CAP理论有帮助。

CAP由Eric Brewer在60 0年PODC会议上提出[1][2],是Eric Brewer在Inktomi[3]期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想:

CAP理论提出7、8年后,NoSql圈将CAP理论当作对抗传统关系型数据库的土办法、阐明买车人放宽对数据一致性(consistency)要求的正确性[6],很久引起了大范围关于CAP理论的讨论。

例如延时(latency),它是衡量系统可用性、与用户体验直接相关的一项重要指标[16]。CAP理论中的可用性要求操作能终止、不无休止地进行,除此之外,亲们还关心到底时要多长时间能结束了操作,这可是延时,它值得亲们设计、实现分布式系统时单列出来考虑。

CAP是分布式系统、有点硬是分布式存储领域中被讨论最多的理论,“哪此是CAP定理?”在Quora 分布式系统分类下排名 FAQ 的 No.1。CAP在守护系统进程员中都是较广的普及,它不仅仅是“C、A、P没办法 一齐满足,最多没办法 3选2”,以下尝试综合各方观点,从发展历史、工程实践等强度讲述CAP理论。希望亲们透过本文对CAP理论有更多地了解和认识。

In order to model partition tolerance, the network will be allowed to lose arbitrarily many messages sent from one node to another.

2、CA非0/1的选者

In a network subject to communication failures, it is impossible for any web service to implement an atomic read/write shared memory that guarantees a response to every request.

1、关于 P 的理解

以上介绍了CAP理论的源起和发展,介绍了CAP理论给分布式系统工程实践带来的启示。

引言

P 是必选项,那3选2的选者题不就变成数据一致性(consistency)、服务可用性(availability) 2选1?工程实践中一致性有不同程度,可用性都是不同等级,在保证分区容错性的前提下,放宽约束后都时要兼顾一致性和可用性,两者都是非此即彼[12]

CAP理论对分布式系统实现有非常重大的影响,亲们都时要根据自身的业务特点,在数据一致性和服务可用性之间作出倾向性地选者。通过放松约束条件,亲们都时要实现在不一齐间点满足CAP(此CAP非CAP定理中的CAP,如C替换为最终一致性)[18][19][20]

Partition字面意思是网络分区,即因网络因素将系统分隔为多个单独的每项,一帮人但会 会说,网络分区的具体情况位于概率非常小啊,是都是不必考虑P,保证CA就好[8]。要理解P,亲们看回CAP证明[4]中P的定义:

C、A、P三者最多没办法 满足其涵盖有另4个 多多,和FLP定理一样,CAP定理也指示了有有另4个 多多不可达的结果(impossibility result)。

3、出現CAP