Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分布式系统中的CAP原理

分布式系统中的CAP原理

作者头像
程序员波特
发布于 2024-01-19 02:15:49
发布于 2024-01-19 02:15:49
1610
举报
文章被收录于专栏:魔法书魔法书

分布式系统中的CAP原理

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。

简介

在分布式系统中,我们经常听到CAP原理这个词,它是什么意思呢?其实和C、A、P这3个字母有关,C、A、P分别是这3个词的首字母。下面我们就看- -下这3个词分别是什么意思?

  • C- Consistent, -致性。具体是指,操作成功以后,所有的节点,在同一时间,看到的数据都是完全一致的。 所以,致性,说的就是数据一致性
  • A- Availability, 可用性。指服务一致可用,在规定的时间内完成响应。
  • P- Partition tolerance;分区容错性。指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供服务。

CAP原理指出,这3个指标不能同时满足,最多只能满足其中的两个。

详解

我们之所以使用分布式系统,就是为了在某个节点不可用的情况下,整个服务对外还是可用的,这正是满足P(分区容错性)。如果我们的服务不满足P(分区容错性),那么我们的系统也就不是分布式系统了,所以,在分布式系统中,P(分布容错性)总是成立的。那么,A(可用性)和C(一致性)能不能同时满足呢?我们看一下下面的图例。

A和B是两个数据节点,A向B同步数据,并且作为一个整体对外提供服务。由于我们的系统保证了P(分区容错性),那么A和B的同步,我们允许出现故障。接下来我们再保证A(可用性),也就是说A和B同步出现问题时,客户端还能够访问我们的系统,那么客户端既可能访问A也可能访问B,这时,A和B的数据是不一致的,所以C(一致性)不能满足。

如果我们满足C(一致性),也就是说客户端无论访问A还是访问B,得到的结果都是一样的,那么现在A和B的数据不一致,需要等到A和B的数据一致以后,也就是同步恢复以后,才可对外提供服务。这样我们虽然满足了C(一致性),却不能满足A(可用性)。

所以,我们的系统在满足P(分区容错性)的同时,只能在A(可用性)和C(一致性)当中选择一个不能CAP同时满足。我们的分布式系统只能是AP或者CP。

ACID与BASE

关系型数据库中,最大的特点就是事务处理,也就是ACID。ACID是事务处理的4个特性。

  • A - Atomicity (原子性),事务中的操作要么都做,要么都不做。
  • C -Consistency (- 致性),系统必须始终处在强一致状态
  • I - Isolation (隔离性),-个事务的执行不能被其他事务所干扰。
  • D- Durability (持久性),-个已提交的事务对数据库中数据的改变是永久性的。

ACID强调的是强一致性,要么全做,要么全不做,所有的用户看到的都是一致的数据 。传统的数据库都有ACID特性,它们在CAP原理中,保证的是CA。但是在分布式系统大行其道的今天,满足CA特性的系统很难生存下去。ACID也逐渐的向BASE转换。那么什么是BASE呢?

BASE是Basically Available (基本可用),Soft-state (软状态),Eve ntually consistent(最终一致)的缩写。

  • Basically Available,基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
  • 软状态(Soft State),软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有两到三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
  • 最终一致性(Eventual Consistency),最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

BASE模型是传统ACID模型的反面,不同与ACID,BASE强调牺牲高一致性,从而获得可用性,数据允许在一段时间内的不一致,只要保证最终一致就可以了。

在分布式事务的解决方案中,它们都是依赖了ACID或者BASE的模型而实现的。像基于XA协议的两阶段提交和实物补偿机制就是基于ACID实现的。而基于本地消息表和基于MQ的最终一致方案都是通过BASE原理实现的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你想了解的分布式--从ACID到CAP/BASE
本文先介绍传统关系数据库中事务的ACID特性,再介绍分布式系统中的经典理论——CAP定理和BASE理论。 事务 事务的定义: 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务。 事务的作用: 当多个应用程序并发访问数据库时,事务可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作相互干扰。-事务为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持数据一致性的方法。事务具
Java架构
2018/05/04
6780
你想了解的分布式--从ACID到CAP/BASE
分布式必备理论基础:CAP和BASE
大家好,我是老三,今天是没有刷题的一天,心情愉悦,给大家分享两个简单的知识点:分布式理论中的CAP和BASE。
三分恶
2021/09/26
2K0
分布式必备理论基础:CAP和BASE
分布式系统
随着互联网的发展,单一节点部署的方式已经无法满足需求,需要通过增加节点来线性扩展系统的负载和性能,因此系统架构也由原来的集中式架构向分布式架构转变。
shysh95
2019/07/23
8570
高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
随着分布式事务的出现,传统的单机事务模型(ACID)已经无法胜任,尤其是对于一个高访问量、高并发的互联网分布式系统来说。
用户1212940
2022/04/13
1.2K0
高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
分布式相关概念:ACID特性,CAP理论,BASE理论
数据库管理系统中事务(transaction)的四个特性: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
IT云清
2019/01/22
8570
从NoSQL运动谈分布式系统的CAP、BASE理论
自从上世纪80年代以降,关系型数据库(即传统的OLTP和OLAP数据库)一直都是后端业务系统的主导,能够满足很多需求。但是,随着数据量的激增、对查询响应要求提升、越来越多非结构化数据泛滥等原因,关系型数据库的领域面临挑战,因此催生了NoSQL(非关系型、not only SQL)运动——这个词在世纪之交才出现,但是NoSQL思想和数据库出现得要早得多。
王知无-import_bigdata
2020/05/20
1.5K0
分布式理论学习二:CAP定理
我们通过微服务形式进行实现整个系统,每个服务都可以有副本,相互之间可以通信,并发能力强
仙士可
2022/02/28
5340
分布式理论学习二:CAP定理
分布式系统架构理论 - CAP、BASE
任何分布式架构设计的系统,只能同时满足 CAP 中的任意两种,无法同时三种并存。
用户1577699
2020/04/11
6720
分布式事务的CAP理论 与BASE理论
  一个经典的分布式系统理论。CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项。
江湖前辈黄药师
2018/08/27
5500
分布式事务的CAP理论 与BASE理论
深入浅出:分布式、CAP 和 BASE 理论
大家好,我是小❤,一个漂泊江湖多年的 985 非科班程序员,曾混迹于国企、互联网大厂和创业公司的后台开发攻城狮。
xin猿意码
2023/10/18
9520
深入浅出:分布式、CAP 和 BASE 理论
《从Paxos到Zookeeper:分布式一致性原理与实践》第一章读书笔记
第一章主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了ACID、CAP和BASE等经典分布式理论,主要包含以下内容:
武培轩
2018/08/03
5500
拜托!这才是分布式系统CAP的正确打开方式!
纠结了很久要不要写这一篇,作为分布式系统的核心理论简单说说容易,聊透却很难,转念一想,如果不写这篇,算什么想通透大数据呢!并且这本身就违背了我写作的初衷;加之正好前几天和同事以ZooKeeper的用户行为反推了CAP理论,回过头来细琢磨了下,还蛮有意思的!闲话少絮,我们进入正题!
create17
2020/09/01
7630
拜托!这才是分布式系统CAP的正确打开方式!
事务的特性、CAP定理、BASE理论
而分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论: AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。 CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。
benym
2022/07/14
2560
事务的特性、CAP定理、BASE理论
一文吃透分布式理论【CAP,BASE深入解析】
hello,everyone。一个月没有写博客了,都不知道该写点啥了哈哈哈。金九银十,年底了,各个公司都开放出了大量的HC,你准备跳槽了吗?
柏炎
2022/08/23
6330
一文吃透分布式理论【CAP,BASE深入解析】
分布式理论——从ACID到CAP再到BASE
在传统的数据中,有ACID四大原则,在分布式中也有对应的CAP理论和BASE理论,这些都是分布式理论的基础。 更多内容参考:大数据学习之路 ACID ACID分别是Atomicity 原子性、Consistency 一致性、Isolation 隔离性、Durability 持久性,有了这几个特性,就保证了数据库的可靠。 原子性 原子性代表一系列的操作要么全做,要么全不做。比如,在银行转账,从一个账号扣钱,另一个账号加钱,这两个操作必须同时进行。否则就会出现账目对不上的情况。 一致性 一致性官方的描述是,
用户1154259
2018/04/18
7720
分布式一致性协议 - CAP、BASE、NWR
这篇文章着重点不在于科普,毕竟关于CAP、BASE的理论的文章,网上很多。所以本文科普篇幅尽量小(只包含概念描述)。主要从几个侧面的问题来描述CAP,进而描述ACID、BASE理念。然后加入一点点调料,如何动态的切换一致性强度。
并发笔记
2020/11/25
1.6K0
【Seata】分布式事务问题和理论基础
在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:
陶然同学
2023/10/14
2550
【Seata】分布式事务问题和理论基础
分布式理论----CAP理论与Base理论
    1)一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。【指强一致性】
忧愁的chafry
2022/10/30
3260
分布式CAP理论和BASE理论
“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
程序大视界
2020/07/20
9280
分布式CAP理论和BASE理论
一定要了解的分布式一致性原理
分布式系统是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
鲁大猿
2020/09/23
9730
一定要了解的分布式一致性原理
相关推荐
你想了解的分布式--从ACID到CAP/BASE
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档