分布式理论-CAP定理
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2个。
文章目录
- CAP原则简介
- CAP原则论证
- CAP原则权衡
- CA without P
- CP without A
- AP wihtout C
- 本文小结
CAP原则简介
选项 | 描述 |
---|---|
Consistency(一致性) | 指数据在多个副本之间能够保持一致的特性(严格的一致性) |
Availability(可用性) | 指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应(不保证获取的数据为最新数据) |
Partition tolerance(分区容错性) | 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障 |
什么是分区
在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但他们的内部子网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域,这就是分区。
CAP原则论证
如图所示,是我们证明CAP的基本场景,网络中有两个节点N1和N2,可以简单的理解N1和N2分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库V,N2也有一个应用程序B和一个数据库V。现在,A和B是分布式系统的两个部分,V是分布式系统的数据存储的两个子数据库。
- 在满足一致性的时候,N1和N2中的数据是一样的,V0=V0。
- 在满足可用性的时候,用户不管是请求N1或者N2,都会得到立即响应。
在满足分区容错性的情况下,N1和N2有任何一方宕机,或者网络不通的时候,都不会 - 影响N1和N2彼此之间的正常运作。
如图所示,这是分布式系统正常运转的流程,用户向N1机器请求数据更新,程序A更新数据库V0为V1。分布式系统将数据进行同步操作M,将V1同步的N2中V0,使得N2中的数据V0也更新为V1,N2中的数据再响应N2的请求。
根据CAP原则定义,系统的一致性、可用性和分区容错性细分如下:
- 一致性:N1和N2的数据库V之间的数据是否完全一样。
- 可用性:N1和N2的对外部的请求能否做出正常的响应。
- 分区容错性:N1和N2之间的网络是否互通。
这是正常运作的场景,也是理想的场景。作为一个分布式系统,它和单机系统的最大区别,就在于网络。现在假设一种极端情况,N1和N2之间的网络断开了,我们要支持这种网络异常。相当于要满足分区容错性,能不能同时满足一致性和可用性呢?还是说要对他们进行取舍?
假设在N1和N2之间网络断开的时候,有用户向N1发送数据更新请求,那N1中的数据V0将被更新为V1。由于网络是断开的,所以分布式系统同步操作M,所以N2中的数据依旧是V0。这个时候,有用户向N2发送数据读取请求,由于数据还没有进行同步,应用程序没办法立即给用户返回最新的数据V1,怎么办呢?
这里有两种选择:
- 第一:牺牲数据一致性,保证可用性。响应旧的数据V0给用户。
- 第二:牺牲可用性,保证数据一致性。阻塞等待,直到网络连接恢复,数据更新操作M完成之后,再给用户响应最新的数据V1。
这个过程,证明了要满足分区容错性的分布式系统,只能在一致性和可用性两者中,选择其中一个。
CAP原则权衡
通过CAP理论,我们知道无法同时满足一致性、可用性和分区容错性这三个特性,那要舍弃哪个呢?
CA without P
如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。
CP without A
如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。
AP wihtout C
要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。
本文小结
对于多数大型互联网应用的场景,主机众多、部署分散。而且现在的集群规模越来越大,所以节点故障、网络故障是常态。这种应用一般要保证服务可用性达到N个9,即保证P和A,只有舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流程的严重程度。
对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁可停止服务,这是保证CA,舍弃P。貌似这几年国内银行业发生了不下10起事故,但影响面不大,报到也不多,广大群众知道的少。还有一种是保证CP,舍弃A,例如网络故障时只读不写。
孰优孰劣,没有定论,只能根据场景定夺,适合的才是最好的。
分布式理论-CAP定理相关推荐
- 分布式理论——CAP定理
CAP定理:对于一个分布式计算系统来说,不可能同时满足以下三点 一致性(Consistency):所有节点访问时都是同一份最新的数据副本 PS:客户端在数据写入任何一台服务器并成功响应后,之后的客户端 ...
- 分布式理论CAP定理
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可兼得. 99 ...
- 分布式理论-CAP理论
一 CAP理论简述 海量数据管理中的一致性理论,包括CAP理论,BASE理论,数据一致性理论模型,以及现有的经典数据一致性技术.其中CAP (Consistency, Availabilit ...
- 分布式理论:CAP、BASE | 分布式存储与一致性哈希
文章目录 分布式理论 CAP定理 BASE理论 分布式存储与一致性哈希 简单哈希 一致性哈希 虚拟节点 分布式理论 CAP定理 一致性(Consistency): 在分布式系统中的所有数据副本,在同一 ...
- 分布式系统概念 | 分布式理论:CAP、BASE
文章目录 CAP定理 BASE理论 CAP定理 一个分布式系统不可能同时满足一致性(Consistency).可用性(Availability).分区容错性(Partition Tolerance)这 ...
- CAP定理与BASE理论
CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...
- 分布式--CAP定理
原文网址:分布式--分布式架构_IT利刃出鞘的博客-CSDN博客 简介 本文介绍分布式的CAP定理. CAP定理概述 说明 一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A ...
- 分布式CAP定理,为什么不能同时满足三个特性?
在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...
- 分布式理论之BASE理论
原文链接:https://segmentfault.com/a/1190000018019595https://segmentfault.com/a/1190000018019595 什么是BASE理 ...
最新文章
- PCL之C++动态内存学习
- 在项目管理情境下,如何做多项目管理?
- 北斗芯片服务器,北斗芯片:GPS定位系统,正是再见!你期待吗?
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
- android 面试汇总二
- WordPress5.7版本下载及更新内容
- xargs命令_Linux xargs命令:一个给其他命令传递参数的过滤器
- 热门开源多媒体库 PJSIP 被爆5个内存损坏漏洞
- Linux命令——set 和 unset
- CF1399C Boats Competition
- linux python3 装pip,linux 安装pip 和python3(示例代码)
- win7计算机开机启动项设置,如何设置WIN7开机启动项?
- P卡、worldfirst、连连跨境电商收款哪家好?
- citespace:Your version‘s status cannot be verified due to network issue. Check your network conne
- 使用高清直播编码器进行低延时直播的方法
- js笔试面试题(随意)
- 金融行业必看20部电影
- 尼康D90对焦模式图解
- Redis面试题(总结最全面的面试题)
- 高通平台lk阶段logo修改