分布式事务的CAP理论

详解分布式事务CAP理论以及常用解决方案 分布式系统面临着复杂的多样化场景,传统的单体架构模式不能满足互联网应用的高并发、高可用及一致性要求,分布式集群架构作为一种新的架构模式应运而生。分布式系统的事务处理则成为分布式事务处理的重要技术。从理论上探讨分布式事务的CAP理论和BASE理论,结合实际场景进行深入剖析,为读者提供一个更加科学的认识。同时,对分布式事务常用的解决方案和适用场景进行阐述,帮助读者根据自身业务特点选择最佳的解决方案。 阅读详情

前言

通过前面的学习,我们了解到了分布式的基础概念,与本地事务不同的是,分布式系统之所以叫分布式系统,是因为提供服务的若干个节点分布在不同机器上,相互之间通过网络交互,不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要进一步的理论基础,接下来,我们先来学习一下分布式事务的CAP理论。

在讲解分布式事务事务控制解决方案之前需要先学习一些基础理论,通过理论知识指导我们确定分布式事务控制的目标,从而帮助我们理解每个解决方案。

一、CAP理论

CAP是Consistency、Avaliability、Partitiontolerance三个词语的缩写,分别表示一致性、可用性、分区容忍性。

为了方便对CAP理论的理解,我们结合电商系统中的一些业务场景来理解CAP,如下图,是商品信息管理的执行流程:
在这里插入图片描述
执行流程如下:

(1)商品请求主数据库写入商品信息(添加商品、修改商品、删除商品);

(2)主数据库向商品服务响应写入成功;

(3)商品服务请求从数据库读取商品信息;

1.1 C - 一致性

一致性是写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点时,从任意节点读取到的数据都是最新的状态。

上图中,商品信息的读写要满足一致性就是要实现如下目标:

(1)商品服务写入主数据库成功,则向从数据库查询新数据也成功。

(2)商品服务写入主数据库失败,则向从数据库查询新数据也失败。

如何实现一致性?

(1)写入主数据库后要将数据同步到从数据库。

(2)写入主数据库后,在向从数据库同步期间要将从数据库锁定,待同步完成后再释放锁,以免在新数据库写入成功后,向从数据库查询到旧的数据。

分布式一致性的特点:

(1)由于存在数据同步的过程,写操作的相应会有一定延迟。

(2)为了保证数据一致性会对资源暂时锁定,待数据同步完成释放锁定资源。

(3)如果请求数据同步失败的节点则会返回错误信息,一定不会返回旧信息。

1.2 A – 可用性

可用性是指任何事务操作都可以得到相应结果,且不会出现响应超时或响应错误。

上图中,商品信息的读取要满足可用性就是要实现如下目标:

(1)从数据库接收到查询的请求则立即能够响应数据查询结果。

(2)从数据库查询不允许出现响应超时或者响应错误。

如何实现可用性?

(1)写入主数据库要将数据同步到从数据库。

(2)由于要保证从数据库的可用性,不可将从数据库中的资源锁定。

(3)即时数据还没有同步过来,从数据库也要返回要查询的数据,哪怕是旧数据,如果连旧数据也没有则可以按照约定返回一个默认信息,但不能返回错误或相应超时。

分布式系统可用性的特点:

(1)所有请求都有响应,且不会出现响应超时或者响应错误。

1.3 P – 分区容忍性

通常分布式系统的各个节点部署在不同的子网,这就是网络分区,不可避免的会出现由于网络问题而导致节点之间通信失败,此时仍可对外提供服务,这叫分区容忍性。

上图中,商品信息读写要满足分区容忍性就是要实现如下目标:

(1)主数据向从数据库同步数据失败不影响读写操作。

(2)一个节点挂掉不影响另一个节点对外提供服务。

如何实现分区容忍性?

(1)尽量使用异步取代同步操作,例如使用异步方式将数据从主数据库同步到从数据库,这样节点之间有效的实现松耦合。

(2)添加从数据库节点,其中一个节点挂掉其它节点提供服务。

分布式分区容忍性的特点:

(1)分区容忍性是分布式系统具备的基本能力。

二、CAP组合方式

在所有的分布式事务场景中不会同时具备CAP三个特性,因为在具备了P的前提下C和A是不能共存的。

下图满足了P即表示实现了分区容忍性:

分区容忍的含义:

(1)主数据库通过网络向从数据库同步数据,可以认为主从数据库部署在不同的分区上,通过网络进行交互。

(2)当主数据库和从数据库之间的网络出现问题不影响主数据库和从数据库对外提供服务。

(3)其一个节点挂掉不影响另一个节点对外提供服务。

如果要实现C则必须保证数据一致性,在数据同步的时候为防止向从数据库查询的不一致则需要从数据库锁定,待完成同步之后解锁,如果同步失败从数据库要返回错误信息或超时信息。

如果要实现A则必须保证数据可用性,不管任何时候都可以向从数据库进行查询数据,并且不能够返回错误信息或者超时信息

通过分析在满足P的前提下,C和A存在矛盾。

所以在生产中对分布式事务处理时需要根据需求来确定满足CAP的哪两个方面。

在这里插入图片描述

1.1 CA组合

CA组合就是保证一致性和可用性,放弃分区容忍性,即不进行分区,不考虑由于网络不通或节点挂掉的问题。那么系统将不是一个标准的分布式系统,我们最常用的关系型数据库就满足了CA。

1.2 CP组合

CP组合就是保证一致性和分区容忍性,放弃可用性。Zookerper就是追求强一致性,放弃了可用性,还有跨行转账,一次转账请求要等待双方银行系统都完成整个事务才能完成。

1.3 AP组合

AP组合就是保证可用性和分区容忍性,放弃一致性。这是分布式系统设计时的选择。

三、小结

通过上面我们学习了CAP的基础理论知识,CAP是一个已经证实的理论:一个分布式系统做多只能满足CAP中的两项,为达到良好的响应性能来提高用户体验,因此一般会做出如下选择:保证A和P,舍弃C强一致性,保证最终一致性。

分布式事务之基础理论(CAP/BASE理论)篇 一、概述 通过前面的学习,我们了解到了分布式事务的基础概念。与本地事务不同的是,分布式系统之所以叫分布式,是因为提供服务的各个节点分布在不同机器上,相互之间通过网络交互。不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了分布式事务的考量标准之一。因此,分布式事务需要更进一步的理论支持,接下来,我们先来学习一下分布式事务的CAP理论。在讲解分布式事务控制解决方案之前需要先学习一些基础理论,通过理论知识指导我们确定分布式事务控制的目标,从而帮助我们理解每个解决方案。 二、CAP理论 CAP是 阅读详情

相关推荐

9 HAL库驱动框架简述(STM32HAL库)

HAL库外设的使用步骤总结如下:1、定义并填充xxx外设句柄结构体。2、如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO、时钟、DMA、中断等资源的初始化。3、调用HAL库的对应外设初始化函数,形如:HAL_xxx_Init()。4、初始化完成,开始使用外设。5、使用方法具体查看对应外设的HAL库驱动包中的说明:补充:HAL库使用主线外设初始化外设使用。

qq_25218501的博客 1976

CAP理论

CAP理论,指的是在一个中,Consistency(),不能同时成立。

2301_77094489的博客 414

小米路由器安装Misstar tools 和MIXBOX

1.该教程适用于如下路由器: 小米路由器1代硬盘版(R1D) 小米路由器mini(R1CM) 全新小米路由器硬盘版(R2D) 小米路由器3(R3) 小米路由器3G(R3G) 小米路由器Pro(R3P) 小米路由器HD(R3D) 2.Misstar2.0在线安装 方法如下: 1.根据路由器对应文件解压文件,把解压目录(比如小米3路由器为R3)和offline_install.sh到U盘根目录,并插入路由器 2.ssh登录后,cd到U盘的目录,比如小米3路...

wybarcelona的博客 2万+

学习笔记----分布式事务CAP简单使用

前言: 本文简单介绍DotNetCore.CAP的简单使用,关于分布式事务中的“CAP原则”和“BASE理论”以及分布式事务的其他解决方案不做过多的介绍 CAP介绍 CAP是一个在分布式系统(SOA)/微服务系统(MicroService)中实现事件总线及最终一致性(分布式事务)的一个开源的C#库,具有轻量级,高性能,易使用等特点 CAP 具有Event Bus的所有功能,简化EventBus中de发布/订阅 CAP 具有消息持久化的功能,服务进行重启或者宕机不比担心消息丢失保证可靠性

baidu_27598031的博客 3586

EPLAN二次开发实战:从API接口到定制化功能的完整指南

本文为电气工程师和自动化设计师提供了一份EPLAN二次开发的完整实战指南。文章详细介绍了从脚本、插件到独立程序三种开发模式,重点讲解了如何使用C#或VB.NET通过API接口操作EPLAN数据模型,实现定制化功能以提升设计效率,并分享了开发环境搭建、调试及项目打包分发的避坑经验。

c6d7e8f9g的博客 1116

SAP:QUERY中SQ02增加选择屏幕权限控制

【代码】SAP:QUERY中SQ02增加选择屏幕权限控制。

weixin_43734184的博客 2325

NetCore结合CAP事件总线实现分布式事务——入门(1)

CAP 是一个EventBus,同时也是一个在微服务或者SOA系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。在微软的 eShopOnContainer 微服务示例项目中,推荐使用 CAP 作为生产环境可用的 EventBus。 安装RabbitMq 官网下载 (转载)RabbitMq详解 三、配置信息 Publisher 1. Startup.cs 2.PubDbContext appsettings.json文件配置连接字符串 3.PubController

世界既不黑也不白,而是一道精致的灰。 1967

STM32CubeIDE下载程序报错:Failed to execute MI command: load G:\\Cube_IDE_EXP\\00_FIRST\\Debug\\00...如何解决??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2592

分布式大全相关知识:CAP、分布式锁、分布式事务

CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本需求,最多只能同时满足其中的2个。

健康平安的活着的专栏 1395

17、自适应和学习索引:在线物理设计调整的新维度

本文探讨了现代数据库管理系统中自适应索引和数据库裂解的新方法,通过结合学习模型与多臂老虎机(MAB)框架,实现在线物理设计调整。文章详细介绍了自适应索引的工作原理、数据库裂解技术以及如何利用机器学习进行索引选择和优化,并讨论了MAB框架在动态调整索引结构中的应用及其实际案例。

go5gopher的博客 79

SAP_通用模块-MASS批量操作技巧

SAP_MM模块-MASS/MM17批量更新主数据详细教程

风沙的博客 2164

分布式事务讲解之CAP,2PC,3PC,TCC,分布式锁

是两阶段提交的一个变种,针对每个操作,都需要有一个其对应的确认和取消操作,当操作成功时调用确认操作,当操作失败时调用取消操作,类似于二阶段提交,只不过是这里的提交和回滚是针对业务上的,所以基于TCC实现的分布式事务也可以看做是对业务的一种补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。try阶段:尝试去执行,完成所有业务的一致性检查,预留必须的业务资源。Confirm阶段:确认执行业务,如果Try阶段执行成功,接着执行Confirm 阶段。

上善若泪 5664

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

分布式事务理论—CAP与BASE

分布式事务理论—CAP与BASE

一恍过去 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

分布式事务:CAP理论详细介绍及发展历史

Eric Brewer是CAP理论和BASE之父。ACID及限制在数据库事务的ACID(原子性、一致性、隔离性和持久性)四大特性确保了单个数据库内部事务处理的可靠性,但在分布式系统环境下,由于网络延迟、节点故障以及数据复制等因素,ACID特性无法直接应用于跨多个数据库或服务的分布式事务。传统的ACID模型在分布式场景下可能导致性能下降或者可用性的损失。Eric Brewer提出了CAP定理,表明在分布式系统中不可能同时满足一致性(C)、可用性(A)和分区容错性(P)这三个要求,在设计时必须有所取舍。

ycsdn10的博客 1279

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分布式事务及CAP理论

事务 在聊分布式事务前,有必要先回顾一下事务。事务可以简单的理解为:一个大的活动由不同的小活动组成,这些活动要么全部成功,要么全部失败。 说的事务,事务的四大特性ACID肯定逃不了: A(Atomic):原子性,表示构成事务的所有操作,要么全部执行完成,要么全部不执行。 C(Consistency):一致性,表示事务执行前后,数据库的一致性约束没有被破坏。如:你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态

weixin_44335140的博客 638

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

分布式事务之CAP理论和BASE理论详解

分布式事务之CAP理论和BASE理论详解,本篇文章主要讲解了分布式事务之CAP理论和BASE理论的基本概念以及原理,后续为大家讲解分布式事务解决方案,大家敬请期待呦!!

Coder_ljw的博客 758

cap理论具体含义_分布式事务的CAP理论

相关历史文章(阅读本文之前,您可能需要先看下之前的系列 )分布式事务「2020年」必学,升职加薪你准备好了吗?事务的基本概念事务的四大特性ACID分布式事务产生的场景前言 通过前面的学习,我们了解到了分布式的基础概念,与本地事务不同的是,分布式系统之所以叫分布式系统,是因为提供服务的若干个节点分布在不同机器上,相互之间通过网络交互,不能因为有一点网络问题就导致整个系统无法提供服务,网络因素成为了...

weixin_34470566的博客 735

CAP和BASE理论以及分布式事务

回想12年左右刚开始接触Nosql,各种Nosql数据库如雨后春笋般出现,如MongoDB、Redis、Hadoop、CouchDB等等,其中有一篇CAP理论文章非常火。到现在CAP、ACID、BASE各种概念,但分布式事务是必须面对的问题。 ACID 数据库管理系统中事务(transaction)的四个特性原子性(Atomicity) 原子性是指事务是一个不可再分割的工作单元,事务中的操作要...

怀素的专栏 1420

一文了解分布式事务、CAP原则、Base理论

什么是分布式事务? 介绍这个之前,先来了解一下这几个问题 什么是事务? 什么是本地事务? 什么是分布式? 什么是分布式事务? 什么是事务? 完成某件事情,需要执行多个步骤,最终多个步骤要么全部成功,要么全部失败。这个过程中可能有多个参与者。 举个例子:微信上A给B转账100元,A账户减少100,B账户增加100,这就是一个事务,这个操作中要么都成功,要么都失败。 事务的场景有很多,参与者也是多种多样 用户注册成功发送邮件,包含2个操作:db中插入用户信息,给用户发送邮件,主..

♨ 1455

分布式事务专题-基本理论(CAP、BASE)

基于微服务架构设计功能,总是绕不开分布式事务的问题,前面已经讲解了分布式事务的基本概念,这一篇文章,主要介绍一下分布式事务基本理论CAP和BASE理论,有了这些理论才能结合业务选择合适的方案。BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。......

少说,多做 5945

《分布式事务理论基础:CAP定理 & BASE理论》

学习目标。

weixin_53622554的博客 1105

05分布式事务之CAP理论和BASE理论

05分布式事务之CAP理论和BASE理论

欢迎阅读我的博客 1166

分布式事务及其CAP和base理论

分布式事务的概念 首先来说一下本地事务,它是指我们单体应用单个数据库中的事务,在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,所以基于关系型数据库的事务又被称为本地事务。 相对于本地事务来说,分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务

夜行僧的博客 547

(一)分布式事务——CAP、BASE理论

分布式事务——理论基础一、分布式事务和单体的事务:二、什么是分布式事务:三、理论基础:1、CAP定理:1.1 一致性:1.2 可用性:1.3 分区容错性:1.4 CAP理论的理解:2、BASE理论:2.1 Basically Available(基本可用):2.2 Soft State(软状态):2.3 Eventually Consistent(最终一致性):2.4 解决问题: 分布式事务——理论基础 一、分布式事务和单体的事务: 以前使用单体架构,往往只有一个服务,使用一个数据库,完成业务的各种要求,.

方方土的博客 811

CAP与BASE:分布式事务理论的双簧舞

CAP与BASE:分布式事务理论的双簧舞

一恍过去 1万+
上一篇: Asp.Net Core使用Scaffold-DbContext反向项目生成实体类
下一篇: CentOS 安装 kafka
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值