如果有人问你CAP理论是什么,你直接把这篇文章发给他!

简介: 如果有人问你CAP理论是什么,你直接把这篇文章发给他!

1、什么是分布式系统

CAP定理是分布式存储系统的基石,分布式系统(distributed system)指的是建立在网络上的软件系统,它是多个计算机节点通过协调工作的方式,共同完成任务的系统。分布式系统解决了单个计算机无法完成的计算和存储任务。但是分布式系统的设计十分复杂,设计者必定面临诸多挑战,比如节点故障、网络分区、异地网络等等问题。


2、垂直扩展和水平扩展

上面有说到分布式系统,分布式和水平扩展等概念经常会一起出现,文中也通过阅读资料和自己的理解总结一下计算机系统超负荷时,常用的两种扩展解决手段。

image.png垂直扩展(纵向扩展、向上扩展、Scale up):

指的是增加现有系统部件的内存、CPU等资源来提升系统的负荷能力。

水平扩展(横向扩展、向外扩展、Scale Out):

指的是在现有系统部件的基础上新增新的机器来提升系统的符合能力。

优缺点:

垂直扩展实现简单,但是机器的增加硬件资源仍然容易达到性能瓶颈,需要继续扩展。

水平扩展实现复杂,但是相比之下能带来系统的高可用、高吞吐量等优势。


3、CAP原则

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

image.png一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

可用性(A):保证每个请求不管成功或者失败都有响应。

分区容错性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。


上面有说到分布式系统建立在网络上,需要依靠网络来进行节点之间的通信,由于网络的不稳定性是必然存在的,这可能会导致节点网络断开,专业术语叫“网络分区”。

image.png在上图中当网络分区产生的时候,分布式节点之间无法进行通信,数据无法及时同步,此时客户端对Node A节点数据的修改无法同步到Node B节点上,这会导致分布式系统中数据不一致,一致性(Consistency)将无法得到保证,如果此时要保证分布式系统中数据一致性,那么只能停止提供服务,等待节点网络恢复数据同步之后,在提供服务,但是这样系统就无法满足可用性(Availability)。

因此CAP原理可以这样简单的总结:当网络分区发生时,一致性和可用性不可兼得。


4、如何取舍

CAP理论应该如何取舍,CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。并且上面有分析在分布式系统中网络分区必然存在的问题,因此理论上CAP在分布式系统中只有CP和AP两种选择。

CP—不要求可用性(Availability),CP追求的是强一致性,每个服务器节点之间的数据必须保证完全一致,选择CP会导致系统在发生网络分区时,无法对外提供服务。CP强一致性的系统架构在银行转账系统中比较常见。Redis、HBase等数据库也是典型的强一致性分布式数据库。

AP—不要求一致性(Consistency),AP追求的是系统高可用,在网络分区发生时,分布式系统仍然能够提供服务,这会导致数据短暂的不一致性。AP高可用的系统架构在淘宝、京东等电商系统的秒杀活动中比较常见。

CA—不允许分区(Partition tolerance),这种情况不符合分布式系统架构,一般情况下都是Mysql、Oracle等RDBMS传统的关系型数据库。




5、资源推荐

关于CAP理论,其实比较简单,但是具体运用于分布式系统实现起来是非常复杂的。网上的文章非常多,我感觉其实只需要看下Robert Greiner的两篇文章就可以。

https://robertgreiner.com/cap-theorem-explained/

https://robertgreiner.com/cap-theorem-revisited/



image.png

目录
相关文章
|
6月前
简述CAP理论,BASE理论
简述CAP理论,BASE理论
58 0
CAP 理论 —最通俗易懂的解释
CAP 理论是分布式系统的一个基础理论,它描述了任何一个分布式系统最多只能满足以下三个特性中的两个: 1:一致性(Consistency) 2:可用性(Availability) 3:分区容错性(Partition tolerance) CAP 理论听起来十分抽象,本文尝试以生活中的例子并用通俗易懂的语言来解释 CAP 理论的含义。
2360 0
|
2月前
|
存储 NoSQL 关系型数据库
什么是 CAP 理论和 BASE 理论,看这一篇就够了
什么是 CAP 理论和 BASE 理论,看这一篇就够了
53 12
|
6月前
|
Nacos
分布式理论:CAP理论 BASE理论
分布式理论:CAP理论 BASE理论
44 2
|
6月前
|
消息中间件 存储 关系型数据库
探究Kafka原理-6.CAP理论实践(上)
探究Kafka原理-6.CAP理论实践
107 0
|
6月前
|
消息中间件 安全 Kafka
探究Kafka原理-6.CAP理论实践(下)
探究Kafka原理-6.CAP理论实践
83 0
|
6月前
|
分布式计算 运维 Dubbo
阿里三面:CAP和BASE理论了解么?可以结合实际案例说下?
经历过技术面试的小伙伴想必对这个两个概念已经再熟悉不过了! CAP 理论 CAP 理论/定理起源于 2000 年,由加州大学伯克利分校的 Eric Brewer 教授在分布式计算原理研讨会(PODC)上提出,因此 CAP 定理又被称作 布鲁尔定理(Brewer’s theorem) 2 年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 发表了布鲁尔猜想的证明,CAP 理论正式成为分布式领域的定理。
|
缓存 分布式计算 网络协议
分布式系统CAP定理中的P | 青训营笔记
分布式系统CAP定理中的P | 青训营笔记
113 0
|
分布式计算 Dubbo NoSQL
|
关系型数据库 MySQL 数据库
面试官:你如何理解分布式cap?
面试官:你如何理解分布式cap?
面试官:你如何理解分布式cap?