分布式事务

【分布式事务】一、分布式事务概念、解决方案,一文彻底搞懂分布式事务 【分布式事务】分布式事务概念、解决方案,一文彻底搞懂分布式事务 阅读详情

分布式事务

分布式事务产生场景

现在大部分互联网公司都会使用分布式架构,往往会将传统单体架构的项目拆分为多个子系统,便于集群的搭建扩展。
如果系统足够大,已经使用了分库操作,业务相互关联的两个系统,却使用了两个不同的数据库,在这种情况下,是会产生分布式事务问题的。
如果是在同一个数据库中,对应的是同一个数据库连接,直接使用Spring的声明式事务就可以解决事务一致性问题。但是当操作的是两个不同的数据库时,数据库连接已经不是同一个,单个系统事务回滚无法确保另外一个系统的事务也会回滚,此时Spring的声明式事务就会显得捉襟见肘,无法应对了。
如下图所示:现在有一个业务场景,我们在某外卖平台点了外卖,并且已经支付成功,现在需要调用运单系统安排外卖小哥进行外卖派送。此时就是两个系统的跨系统调用,而且两个系统用的是不同的数据库,此时就会出现分布式事务问题。
在这里插入图片描述
下单成功后,需要将用户信息,例如:电话号码,地址,下单商品,订单价格等信息传给运单系统,但是两个系统之间现在是无法知道对方是否成功,所以就会产生分布式事务问题:
1.接口调用成功,订单系统数据库事务提交失败,但是运单系统的数据没有回滚,导致用户下单失败,但是却收到了外卖;
2.接口调用失败,订单系统未回滚事务,导致用户下单成功,却收不到外卖;
这两种情况都没有保证事务的最终一致性。

分布式事务解决方案

以下是分布式事务的解决方案。

基于数据库XA/JTA协议

需要数据厂商支持

异步校对方式

异步拉取对账单形式

基于可靠消息(MQ)解决方案

异步场景;通用性较强;扩展性较高

RabbitMQ特性

在这里插入图片描述

整体设计思路

出现分布式事务的不一致最根本的原因是两个系统的事务无法明确的知道对方是否提交或者回滚。所以需要一个中间容器,它要具有以下特性:
1.能够可靠的存储两个系统交互的信息;
2.这个容器两头一个存,一个取,存必须保证成功,取了消息,并且要消费消息之后让存消息的一方知道

正好RabbitMQ满足这两个特性,下面具体介绍下RabbitMQ的解决方案设计思路。
在这里插入图片描述

  1. 可靠的消息生产–消息发送
    由事务的发起方(一般为业务首先开始的一方)维护消息表,同时业务操作要和消息表的插入在同一个事务中,确保业务操作和插入消息表记录同时成功。
    通过Spring集成RabbitMq,配置开启消息发送确认机制。不然消息发送之后不回产生回执消息,系统无法保证消息一定发送成功。
    在这里插入图片描述
  2. 可靠消息生产–消息发送成功修改状态
    在消息发送成功并收到确认回执后,需要修改数据库中消息表的状态。
    在这里插入图片描述
  3. 可靠的消息处理–正常状态
    RabbitMQ默认为开启手动ACK模式,即exchange转发消息后,会自动删除Queue中的数据,需要手动开启ACK模式。
    开启后当运单中心从Queue中获取到消息并且消费成功,业务处理完成后,会发送回执消息,此时消息才会从Queue中删除。
    因为运单中心会定时扫表,没有发送的消息会重复进行发送,所以有可能会出现同一条消息多次发送的情况。此时运单中心需要进行一个幂等处理。
    在这里插入图片描述
  4. 可靠消息处理
    a 消息重发
    在这里插入图片描述
    b 消息丢弃
    在这里插入图片描述
    代码示例
    在这里插入图片描述

优缺点

优点:
1.通用性强:很多业务场景适用
2.扩展性强:MQ,provider,consumer都可以做集群,易于扩展
3.方案成熟:是现在主流的解决方案

缺点:
1.由于使用了消息中间件,所以只能够用于异步场景,无法确保及时返回consumer消费状态
2.消息队列可能会有延迟,只能够做到事务的最终一致性

综上所述:在我们设计的时候,尽量要避免分布式事务的发生,使用到了分布式事务,会增加系统复杂度,同时还会降低性能。

TCC编程式解决方案

各个公司自己封装DTX

扩展

分布式事务是有很多理论基础的,想要了解更多,可以看看下面的理论。

CAP
BASE
2PC协议
3PC协议
Paxos算法
Raft一致性协议

ai数字人系统部署 这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。 阅读详情

相关推荐

ESP32-S3 SPI驱动SD卡与FATFS文件系统实践

SPI(串行外设接口)是嵌入式系统中常用的同步串行通信协议,通过主从架构实现全双工通信。其工作原理基于时钟同步和数据线传输,具有接线简单、占用引脚少的优势。在存储扩展场景中,SPI模式可驱动SD卡实现大容量数据存储,配合FATFS文件系统可提供标准化的文件管理能力。ESP32-S3作为乐鑫推出的高性能Wi-Fi/蓝牙双模芯片,其SPI外设支持高达80MHz时钟频率,结合ESP-IDF提供的sdspi_host驱动,开发者能快速实现SD卡存储方案。该技术广泛应用于物联网设备日志存储、传感器数据采集等场景,本实

weixin_29168393的博客 357

蚂蚁金服分布式事务框架DTX源码学习

文章目录一、前言二、DTX简介三、角色四、服务发起者与参与者DTX客户端启动流程1、项目启动,创建dtx动态代理2、初始化DtxClient客户端的init()方法五、服务发起以及参与流程 一、前言 之前因工作原因(公司购买了阿里的金融中间服务),接触一段DTX,通过反编译看了一些DTX的源码并记录一些笔记,但是并不完全,由于DTX-SERVER阿里只是提供了一个很简单的测试demo,加上时间等因...

敲代码的文科生的博客 3598

电磁场可视化

电磁场可视化 如题,做了电磁场可视化这么久了,也是颇有些心得了,简单描述一下怎么做这个项目的。 开始时是从最基本的OpenGL开始做的,必不可少的翻了许多的文献,后来是直接在unity中做,发现效果挺好,而且可控性强好多。反复琢磨后,发现可视化的渲染,有几种思路,第一就是用linerender,画线的方法,另一种就是用shader。 第一种我通过unity自带的linewave插件可以做到 详细的就是,linewave插件可以轻松画出曲线等,并且可以添加碰撞,控制频率幅度长度等一切的条件数值,而且令人惊喜

weixin_43979140的博客 1671

Seata-DTX|分布式事务金融场景案例介绍

文|魏陈豪(花名:无陈 Sam)蚂蚁集团 SOFAStack 产品专家本文2966字 阅读 8分钟序言今天给大家带来一篇Seata-DTX[1]商业版分布式事务在金融行业如何保证事务一致性的实践介绍。从一个全局视角出发看看一致性的保证、分别有哪些节点,事务组件在其中处在一个什么位置、担任什么工作。分布式系统下的事务问题阐述云原生应用以分布式系统为主,应用会被切分到多个分布式的微服务系统下...

金融级分布式架构 1999

RK3568下GPIO模拟串口

在嵌入式开发中,硬件 UART 资源可能被其他外设占用。此时,通过 GPIO 模拟 UART(软串口)成为一种灵活的解决方案。本文基于 RK3568 平台,结合 Linux 内核模块,实现高精度软串口通信,并深入分析关键技术细节。可以看到已经接收到数据了,可以自己创建自定义的设备文件到/dev下,也可以按照串口设备的标准创建一个设备,后面有时间我写一篇和标准串口设备结合的gpio模拟串口文章。RK3568 GPIO 模拟串口(软串口)实现详解。将编译好的驱动放到板子上运行。再写个Makefile。

文石_2009的博客 364

YOLO26 数据标注工具:LabelImg、Label Studio实战指南:主流标注工具的安装配置与使用技巧,高效完成目标检测数据标注

本文介绍了目标检测中数据标注的核心地位与常用工具。数据标注质量直接影响模型性能,需要关注准确性、一致性等维度。文章详细讲解了边界框、类别标签等基本概念,并对比了LabelImg、Label Studio等主流标注工具的特点。重点介绍了LabelImg的轻量级、易用性等优势,以及Label Studio的协作功能,为不同规模项目提供标注工具选择建议。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1177

分布式事务框架以及解决方案

全局事务涉及几个本身具有事务性的操作,但是所有操作必须作为一个组同时COMMIT或者ROLLBACK,从本质上讲,这将ACID属性扩展到上一个级别,以便可以将多个ACID事务作为具有ACID属性的全局操作的组成部分一起执行。 使用全局事务的应用程序涉及一个或多个资源管理器和一个事务管理器: 资源管理器(RM)提供对事务性资源的访问。数据库服务器是一种资源管理器。必须能够提交或回滚RM管理的事务。 事务管理器(TM)协调作为全局事务一部分的事务。它与处理每个事务的RM通信。全局事务中的单个事务是全局事务的

weixin_43875870的博客 1815

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 286

分布式事务从入门到放弃(二)--详述DT引擎一致性原理及设计

????????关注后回复“进群”,拉你进程序员交流群????????作者丨成小灰来源丨Coder的技术之路❝分布式事务解决什么问题准备调用下游扣费,或刚调起下游扣费接口,服务宕机了,...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 444

机器学习扩散模型简介

​ 扩散模型是生成模型,在过去几年中越来越受欢迎,这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界展示了 Diffusion 模型的能力,例如在图像合成方面击败 GAN[6]。最近,从业者将看到DALL-E 2(OpenAI 上个月发布的图像生成模型)中使用的扩散模型。

gongdiwudu的专栏 4268

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 818

分布式架构(分布式ID+分布式事务)

分布式

usa_washington的博客 2232

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性

data+scenario+science+insight 835

【分布式事务】分布式事务

一、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据存储的数据一致性。 二、分布式事务产生的原因 2.1 数据库分别库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表。这时候,如果一个操作既访问01库,又访

wuychn 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

分布式事务TCC

之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。 所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。 ###一、业务场景介绍 咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。 那对一个订单支付之后,我们需要做下面的步骤: 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 这是一

少年闰土的博客 3886

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

分布式事务Seata

分布式事务seata

DarzenWong的博客 9955

假人有限元模型

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

分布式事务(基于Seata解决分布式事务的四种模式)

本篇文章讲述了分布式事务的基本概念,以及基于Seata框架解决分布式事务的四种模式:XA,TA,TCC,SAGA模式。

qq_45304119的博客 4755

分布式事务和分布式事务框架Seata

一篇文章带你快速入门分布式事务框架Seata

jc15274630894的博客 2159

Seata 分布式事务

分布式事务

没有简介 2081

【分布式事务】分布式事务解决方案理论

分布式事务解决方案

低调做人,低调编码,神码都是浮云 2250

面试总结之 《分布式事务》

文章目录一、分布式事务1. 本地事务和分布式事务二、分布式事务的基础1. CAP2. BASE3. 柔性事务4. 可见性(对外可查询)5. 幂等操作三、分布式解决方案1. 2PC2. 3PC3. 补偿事务(TCC)4. 本地消息表(异步确保)5. 事务消息6. 尽最大努力通知参考文章 一、分布式事务 1. 本地事务和分布式事务 本地事务是解决单个数据源上的数据操作的一致性问题的话,那么分布式事务则是为了解决跨越多个数据源上数据操作的一致性问题。 强一致性、弱一致性、最终一致性 从客户端角度,多进程并发访问时

ding_wl 2754

【分布式事务】分布式事务Seata

本文详细介绍了Seata是什么,以简单易懂的描述介绍Seata的特色功能

weixin_43333483的博客 2431

Dubbo 分布式事务

分布式事务是指在多个不同的服务或数据库之间,确保一组操作要么全部成功,要么全部失败的机制。分布式事务的核心挑战在于确保数据的一致性和完整性,尤其是在分布式系统中,数据和操作可能分散在不同的网络节点上。两阶段提交协议(2PC, Two-Phase Commit Protocol):经典的分布式事务管理协议,分为准备阶段(Prepare Phase)和提交阶段(Commit Phase)。XA 是一种基于两阶段提交的分布式事务协议。

Flying_Fish_roe的博客 1776
上一篇: jedis及Redis过期
下一篇: RocketMQ基本概念及优化
LittleShineShine
博客等级 码龄9年 20粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值