3.2 分布式事务(二)分布式事务方案

基于RocketMQ的分布式事务解决方案 - 实现互联网移动架构师Android框架体系架构 本文介绍了基于RocketMQ的分布式事务解决方案,并探讨了如何将其应用于Android移动应用的架构体系。在Android移动应用的架构中,应用该解决方案可以提高系统的可靠性和可扩展性,并实现更加稳定和高效的分布式通信。通过将基于RocketMQ的分布式事务解决方案应用于Android移动应用的架构体系,我们可以提高系统的可靠性和可扩展性,实现更加稳定和高效的分布式通信。分布式事务:当移动应用需要与后端系统进行分布式事务处理时,可以通过RocketMQ的事务消息机制来实现分布式事务的一致性。 阅读详情


1. 概述

普通的事务可以理解为一个单体应用多人同时操作数据库产生:
在这里插入图片描述

而分布式事务则是多人同时操作多个嵌套服务的数据库关系:
在这里插入图片描述

在微服务系统中,每个微服务应用都可能会有自己的数据库,它们首先需要控制自己的本地事务。

一项业务操作可能会调用执行多个微服务。如何保证多个服务执行的多个数据库的操作整体成功或整体失败?这就是分布式事务要解决的问题。

2.解决概念

目前市面上共有俩种解决理念,分别为CAP 和 BASE;CAP 和 BASE是对大规模互联网系统分布式实践的理论总结,如果没有实践为基础理论则难以理解。

这里建议先对分布式事务进行实践,之后再来阅读理论来互相印证。

2.1 CAP

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

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

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

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

在这里插入图片描述

下面是关于百度百科对CAP的介绍:

在分布式系统中,由于网络原因出现子系统之间无法通信的情况,就会造成分区。一般分布式系统中必须容忍这种情况,那么就需要在A和C之间进行取舍。

在分布式事务中,

如果保证CP,就意味着要让所有子系统的数据操作要么全部成功,要么全部失败,不允许有不一致的情况发生。但是强一致性会造成性能下降。

如果保证AP,就意味着可以牺牲一定的一致性,允许在各个子系统中存在有的数据操作成功,有的数据操作失败的情况,只要通过后续处理,能够达到最终一致即可。

2.2 BASE

下面是关于百度百科对BASE的介绍:

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。

BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。接下来我们着重对BASE中的三要素进行详细讲解。基本可用:指分布式系统在出现不可预知故障的时候,允许损失部分可用性。

注意,这绝不等价于系统不可用,以下两个就是“基本可用”的典型例子:

  • 响应时间上的损失:正常情况下,一个在线搜索引擎需要0.5秒内返回给用户相应的查询结果,但由于出现异常(比如系统部分机房发生断电或断网故障),查询结果的响应时间增加到了1~2秒。
  • 功能上的损失:正常情况下,在一个电子商务网站上进行购物,消费者几乎能够顺利地完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。
  • 弱状态:也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
  • 最终一致性:强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

2.3 解决方案

分布式事务有以下解决方案:

  • XA
  • TCC
  • Seata 框架 AT 事务
  • SAGA
  • 可靠消息最终一致性
  • 最大努力通知

后面我们会对 Seata 框架 AT 事务、TCC 和 可靠消息最终一致性 三个方案进行实践。

在这里插入图片描述

分布式事务的经典解决方案 - 编程实现 需要注意的是,两阶段提交协议虽然能够确保分布式事务的一致性,但也存在一些潜在的问题,比如协调者单点故障、阻塞问题等。因此,在实际应用中,可以考虑使用基于两阶段提交协议的改进方案,如三阶段提交协议、Paxos算法等,以提高系统的可用性和性能。需要注意的是,两阶段提交协议虽然能够确保分布式事务的一致性,但也存在一些潜在的问题,比如协调者单点故障、阻塞问题等。因此,在实际应用中,可以考虑使用基于两阶段提交协议的改进方案,如三阶段提交协议、Paxos算法等,以提高系统的可用性和性能。本文提供了一个简单的Java。 阅读详情

相关推荐

手机Camera硬件电路设计:从电源管理到信号完整性的实战解析

本文深入解析了手机Camera硬件电路设计的核心挑战与实战经验,重点聚焦于电源管理与信号完整性两大基石。文章详细阐述了AVDD、DVDD、IOVDD和AFVDD四路电源的差异化设计要点与噪声控制策略,并剖析了MIPI等高速信号通道的完整性设计原则,为硬件工程师提供了从理论到PCB布局布线的完整实战指南。

weixin_28308325的博客 242

分布式事务6种解决方案(超详细)

typora-root-url: ./分布式事务图片 typora-copy-images-to: ./分布式事务图片 分布式事务六种解决方案 前言 事务想必大家并不陌生,严格意义上讲事务应该具备ACID,目前常见的分布式事务解决方案包括2PC、3PC、TCC、本地消息表、消息事物、最大努力通知等。 ACID 原子性:一个事物内的所有操作都要全执行或者都不执行 一致性:事务前后数据的完整性必须保持一致 隔离性:多个事务并发执行,不能被其他事物的操作所干扰 持久性:事务一旦提交,它的改变应该是持久性的

义笔记 2万+

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

分布式事务的五种解决方案

首先,传统的单体应用,通过 3 个 Module,在同一个数据源上更新数据来完成一项业务。很自然的,整个业务过程的数据一致性由本地事务来保证。 但是在微服务中,每一个服务内部的数据一致性仍由本地事务来保证。而整个业务层面的全局数据一致性要如何保障呢?这就是微服务架构下面临的,典型的分布式事务需求:我们需要一个分布式事务的解决方案保障业务全局的数据一致性。以下便是分布式微服务中的事务解决方案

m0_47671062的博客 3484

Vivado2022.2下载安装

链接:https://pan.baidu.com/s/1lyfE2d-VmaWC-_aR8ratCQ提取码:mt09。

weixin_61081689的博客 2万+

Veeam Backup Replication Console 13 备份 PVE

本文介绍了如何通过Veeam Backup & Replication控制台配置与Proxmox VE(PVE)服务器的连接,包括主机地址、用户名密码和SSH信任设置。随后详细说明了部署备份Worker虚拟机的步骤,涵盖网络配置和VM创建。接着指导用户创建PVE虚拟机备份任务,包括命名、选择备份对象、存储位置、备份类型设置,以及配置备份计划任务。最后描述了备份测试执行过程,从启动备份到完成状态通知的完整流程。整个操作涉及服务器连接、Worker部署、备份配置和任务执行四个主要环节。

极致,细节 1580

分布式事务解决方案

分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不...

湖人•总冠军 1万+

hpm6750evk2开发板(四)TCP回送(1000M网口)

再接下来我们修改代码,先找到配置网速的地方,肯定是在enet的初始化函数里面,我们一个函数一个函数找,也可以用单步调试一步一步找,结果发现是在enet_init函数里面调用的rtl8211_basic_mode_default_config函数配置网速的,我们把enet_phy_port_speed_100mbps改为enet_phy_port_speed_1000mbps,重新编译运行试试。首先我们复制一份lwip_tcpecho代码,重命名为lwip_tcpecho_RGMII,如下图所示。

Silas1750的博客 908

分布式事务(二)———2PC/3PC(强一致性)解决方案

分布式事务解决方案之2PC/3PC提交以及seata的实现

共勉 1885

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 535

MOS五类漏电流与优化策略

分析了五种主要漏电流机制:1)反偏结泄漏,由PN结热激发和隧

硬核科技 434

架构系列——分布式事务

系统一旦分布式了之后,通信、缓存、消息、事务、锁、配置、日志、监控、会话等等各种原来单块系统场景下很容易解决的问题,都会变得很复杂,需要引入大量外部的技术。

前方一片光明 3204

YOLOv11改进 - 卷积Conv | SPD-Conv空间深度转换卷积优化空间信息编码,攻克小目标检测难题

本文介绍了一种名为SPD-Conv的新型CNN构建块及其在YOLOv11中的结合。传统CNN在处理低分辨率图像或小物体时,因使用步长卷积和池化层导致细粒度信息丢失、性能下降。SPD-Conv由空间到深度(SPD)层和非步长卷积(Conv)层组成,完全消除卷积步长和池化层,避免信息损失。SPD层重排特征图元素将空间信息转换到深度维度,非步长卷积层进一步处理特征图。我们将SPD-Conv集成进YOLOv11,实验证明其在低分辨率图像和小物体检测任务上显著优于现有模型。

魔改工程师的博客 1127

ole db 访问接口 sqlncli 无法启动分布式事务_“双十一”节前别去大厂面试,有读者最终挂在了分布式事务上,哭惨~...

本文提纲如下前言单数据源事务 & 多数据源事务常见分布式事务解决方案2.1. 分布式事务模型2.2. 二将军问题和幂等性2.3. 两阶段提交(2PC) & 三阶段提交(3PC)方案2.4. TCC 方案2.5. 事务状态表方案2.6. 基于消息中间件的最终一致性事务方案Seata in AT mode 的实现3.1. Seata in AT mode 工作流程概述3.2....

weixin_39976733的博客 192

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

分布式事务种类介绍

分布式事务种类介绍 一、2PC 二阶段提交 1.算法思路 参与者将本身事务的执行情况发送给事务协调者,由事务协调者判断事务调用链是否执行提交操作还是回滚操作 2.提交步骤 1.准备阶段 1.1 事务协调者向所有的事务参与者询问是否可以执行提交操作,并开始等待各事务参与者的执行回应! 1.2 事务参与者回应事务协调者的请求,并执行本地的事务日志操作,等待事务协调者的通知! 2.提交阶段 2....

皇甫嗷嗷叫 757

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

彻底掌握分布式事务2PC、3PC模型

前言 工作中使用最多的是本地事务,但是在对单一项目拆分为 SOA、微服务之后,就会牵扯出分布式事务场景 文章以分布式事务为主线展开说明,并且针对 2PC、3PC 算法进行详细的讲解,最后通过一个 Demo 来更深入掌握分布式事务,文章目录结构如下 什么是事务 什么是分布式事务 DTP 模型和 XA 规范 什么是 DTP 模型 什么是 XA 规范 2PC 一致性算法 2PC-准备阶段 2PC-提交阶段 2PC 算法优缺点 3PC 一致性算法 JDBC 操作 MySQL XA 事务 结言 .

Long-Tai 786

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

分布式事务之XA协议

分布式事务之XA协议 业务场景 首先先来看一个物业缴费的业务场景,用户收到缴费单之后进行缴费,分为三步,第一步扣减用户余额,第二步修改订单状态未已缴费,第三步增加物业管理金额。现在我们假设用户余额,订单以及物业管理金额分别在三个不同的数据库中,并且假定在同一个服务中(即单服务多数据源场景,注意与多服务多数据源做区分,区别在于是否需要全局的TM,文章后续介绍) 本地事务方案 public void pay() { ownerAccountTransation.begin(); orderTra

jy00733505的博客 1879

分布式事务

分布式事务 事务? 严格意义上的事务执行需要遵循ACID原则(尽管也是很难完全遵循,不然为什么会有四种隔离级别呢?) 原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。 一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态。 隔离性(Isolation),指的是多个事务并发执行

zz_smallred的博客 242

对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)

点击上方☝码猿技术专栏轻松关注,设为星标!及时获取有趣有料的技术前言先和大家分享一个好消息:10月初陈某的粉丝数破一万了,非常感谢各位读者的支持!这是《Spring Cloud 进阶》专...

码猿技术专栏 4897

分布式事务的解决方案

分布式事务是什么:   分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 为什么会产生分布式事务:   当我们的单个数据库的性能产生瓶颈的时候,我们可能会对数据库进行分区,这里所说的分区指的是物理分区,分区之后可能不同的库就处于不同的服务器上了,这个时候单个数据库的ACID已经不能适应这种情况了,而在这种ACID的集群环境下,再想...

weixin_30735745的博客 139

【分布式面试高频】- 04 分布式事务的解决方案(2PC TCC 可靠性消息 最大努力通知)

【分布式面试高频】- 04 分布式事务的解决方案(2PC TCC 可靠性消息 最大努力通知) 4.1 网络二将军问题 这里给出一个二将军问题的简化版本: 一支白军被围困在一个山谷中,山谷的左右两侧是蓝军。困在山谷中的白军人数多于山谷两侧的任意一支蓝军,而少于两支蓝军的之和。若一支蓝军对白军单独发起进攻,则必败无疑;但若两支蓝军同时发起进攻,则可取胜。两只蓝军的总指挥位于山谷左侧,他希望两支蓝军同时发起进攻,这样就要把命令传到山谷右侧的蓝军,以告知发起进攻的具体时间。假设他们只能派遣士兵穿越白军所在的山谷

Mind_programmonkey的博客 872

阿里终面:分布式事务原理

本文提纲如下 前言 单数据源事务 & 多数据源事务 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等性 2.3. 两阶段提交(2PC) & 三阶段提交(3PC)方案 2.4. TCC 方案 2.5. 事务状态表方案 2.6. 基于消息中间件的最终一致性事务方案 Seata in AT mode 的实现 3.1. Seata

m0_67322837的博客 163

分布式事务一致性方案

强一致性2PC 解决不同数据库的事务一致性问题,XA协议。由协调者和参与者两个角色完成。 第一阶段:先执行DML语句,但是不提交。 第二阶段:根据第一阶段的返回结果,决定是commit还是rollback。 缺点:1、性能问题,锁定资源后要等待所有节点返回,不适合高并发场景。 2、二阶段时,如果协调者挂掉,存在悬而不决的问题;如果参与者挂掉,不知道是否要回滚。 3、存在脑裂问题。3PC 2PC的第一阶段拆分为两步,第一阶段只是询问,第二阶段才锁定资源。 并且参与者增加了超时判断的功能。TCC 解决不同服务之

Mountainest 498
上一篇: 3.1 分布式事务(一)Mysql本地事务和事务隔离级别
下一篇: 3.3 分布式事务(三)Seata分布式事务框架-AT模式介绍
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值