【微服务】面试题 6、分布式事务
分布式事务面试题讲解

一、问题背景与解决方案概述
- 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。
- 主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。
二、Seata 框架关键角色

- 事务协调者(TC):维护全局和分支事务状态,协调提交或回滚,需单独部署。
- 事务管理器(TM):定义全局事务范围,负责开启、提交等操作。
- 资源管理器(RM):每个微服务即一个 RM,代表分支事务,需向 TC 注册并报告状态。
三、Seata 框架 XA 模式

- 流程:TM 开启全局事务后调用分支事务注册到 TC,RM 执行业务 SQL 但不提交,先报告状态给 TC,TM 依据 TC 反馈的分支事务状态决定提交或回滚。
- 特点:保证数据强一致性,属 CP 模式,但性能差,因分支事务需相互等待。
四、Seata 框架 AT 模式

- 流程:TM 开启全局事务并调用分支事务注册到 TC,分支事务执行并提交业务 SQL,同时记录更新前后快照到 undo log,报告状态给 TC,TM 提交或回滚全局事务,TC 检查状态,成功则通知分支事务删除 undo log,失败则依据 undo log 逆向恢复数据。
- 特点:性能较好,为 AP 模式,是官方推荐且开发常用方式。
五、Seata 框架 TCC 模式

- 流程:基于 try(资源检查或预留)、confirm(完成资源操作)、cancel(预留资源释放)三个阶段。TM 开启全局事务并调用分支事务注册到 TC,分支事务进行资源预留操作后报告状态,TM 根据 TC 检查结果提交(执行 confirm 操作)或回滚(执行 cancel 操作)。
- 特点:性能较高,属 AP 模式,但代码耦合度高,需手动编写代码维护三个阶段。
六、MQ 解决分布式事务方案

- 流程(以借呗借钱为例):借呗审核通过后生成借款单并向 MQ 发消息通知支付宝转账,需确保相关操作在同一事务内运行,否则不发送消息。
- 特点:异步操作性能好但实时性差,保证数据最终一致性,适用于对数据强一致性要求不高的场景,若支付宝增加余额出现异常通常需人工介入。
七、不同方案适用场景与面试应对
- 适用场景:XA 模式和 TCC 模式常用于银行业务;AT 模式和 MQ 方式多用于互联网业务。

相关文章:
【微服务】面试题 6、分布式事务
分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。 二、Seata 框架关键角色 事务协调者(TC)&…...
【2024年华为OD机试】(C卷,100分)- 分割均衡字符串 (Java JS PythonC/C++)
一、问题描述 题目描述 均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。 约定:字符串中只包含大写的 X 和 Y 两种字符。 输入描述 输入一个均衡串…...
Spring Data Elasticsearch简介
一、Spring Data Elasticsearch简介 1 SpringData ElasticSearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。 Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通…...
GESP202312 四级【小杨的字典】题解(AC)
》》》点我查看「视频」详解》》》 [GESP202312 四级] 小杨的字典 题目描述 在遥远的星球,有两个国家 A 国和 B 国,他们使用着不同的语言:A 语言和 B 语言。小杨是 B 国的翻译官,他的工作是将 A 语言的文章翻译成 B 语言的文章…...
键盘过滤驱动
文章目录 概述注意源码参考资料 概述 irp请求会从io管理器中传递到设备栈中依次向下发送,当到达底层真实设备处理完成后,会依次返回,这时如果在设备栈中有我们自己注册的设备,就可以起到一个过滤的功能。键盘过滤驱动就是如此&am…...
dolphinscheduler2.0.9升级3.1.9版本问题记录
相关版本说明 JDK:JDK (1.8) DolphinScheduler :3.1.9 数据库:MySQL (8),驱动:MySQL JDBC Driver 8.0.16 注册中心:ZooKeeper (3.8.4) 问题一:dolphinscheduler2.0.9对应zk版本使用…...
【权限管理】Apache Shiro学习教程
Apache Shiro 是一个功能强大且灵活的安全框架,主要用于身份认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)。它旨在为…...
9.4 visualStudio 2022 配置 cuda 和 torch (c++)
一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…...
python特殊参数
一、默认值参数和关键字参数 1.默认值参数 形参设定默认值 称为 默认参数。调用函数时,可以使用比定义时更少的参数。调用函数时,如果没有传入默认参数对应的实参,则实参使用默认值默认参数在调用的时候可以不传递,也可以传递 …...
Ubuntu系统Qt的下载、安装及入门使用,图文详细,内容全面
文章目录 说明1 在线安装2 离线安装3 使用Qt Creator创建Qt应用程序并构建运行补充补充一:注册Qt账号 说明 本文讲解Ubuntu系统下安装Qt,包括在线安装和离线安装两种方式,内容充实细致,话多但是没有多余(不要嫌我啰嗦…...
elasticsearch集群部署
一、创建 elasticsearch-cluster 文件夹 创建 elasticsearch-7.6.2-cluster文件夹 修改服务es服务文件夹为node-001 修改config/elasticsearch.yml 配置文件 # Elasticsearch Configuration # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # …...
初学stm32 --- DAC模数转换器工作原理
目录 什么是DAC? DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介(F1/F4/F7) 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC? DAC,全称:Digital…...
保证Mysql数据库到ES的数据一致性的解决方案
文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台,在即将到来的春季促销活动之前ÿ…...
Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题
解决 Flutter Xcode 16 使用 image_pickers 无法弹出选择图片视图的问题 在开发 Flutter 应用时,图片选择功能是常见的需求之一。image_pickers 库因其便捷性和功能丰富性,成为了许多开发者的选择。然而,随着 Xcode 版本的不断更新ÿ…...
socket网络编程-TC/IP方式
网络编程 1.概念:两台设备之间通过网络数据传输。 2.网络通信:将数据通过网络从一台设备传输另外一台设备。 3.java.net包下提供了一系列的类和接口,提供程序员使用,完成网络通信。 TCP和UDP TCP协议: 1.使用TCP协…...
《分布式光纤测温:解锁楼宇安全的 “高精度密码”》
在楼宇建筑中,因其内部空间庞大,各类电器设施众多,如何以一种既高效又稳定,兼具低成本与高覆盖特性的方式,为那些关键线路节点开展温度监测,是目前在安全监测领域一项重点研究项目,而无锡布里渊…...
C语言基本知识复习浓缩版:数组
所谓数组(Array),就是一系列数据的集合。这些数据具有相同的类型,并且在内存中挨着存放,彼此之间没有缝隙。换句话说,数组用来存放多份数据,但是它有两个要求: 这些数据的类型必须相…...
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
rk3568 内核态OOM内存泄漏kmemleak使用
1,配置,修改\kernel\arch\arm64\configs\rockchip_linux_defconfig,修改后查看.config. larkubuntu:~/Public/rk356x-linux/rk356x-linux/kernel$ cat .config | grep -i kmemleak CONFIG_HAVE_DEBUG_KMEMLEAKy CONFIG_DEBUG_KMEMLEAKy CONFI…...
ASP.NET Core - 日志记录系统(二)
ASP.NET Core - 日志记录系统(二) 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲,所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…...
零代码上手MGeo地址匹配:5分钟部署,实测中文地址识别准确率92.7%
零代码上手MGeo地址匹配:5分钟部署,实测中文地址识别准确率92.7% 地址匹配一直是中文NLP领域的难题——"北京市朝阳区建国路88号"和"朝阳区建国路88号大望中心",人类一眼就能判断是同一地点,但传统方法却束手…...
打造专属海拉鲁冒险:塞尔达传说旷野之息个性化存档编辑指南
打造专属海拉鲁冒险:塞尔达传说旷野之息个性化存档编辑指南 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 在塞尔达传说旷野之息的广阔世界中…...
bert-base-chinese语义增强实践:结合同义词替换提升模型鲁棒性教程
bert-base-chinese语义增强实践:结合同义词替换提升模型鲁棒性教程 你是不是遇到过这样的情况:精心训练的文本分类模型,面对用户输入时,只要对方换个说法,哪怕意思完全一样,模型就可能给出错误的判断&…...
Java开发者福音:SpringBoot集成RexUniNLU,5分钟搞定零样本意图识别
Java开发者福音:SpringBoot集成RexUniNLU,5分钟搞定零样本意图识别 1. 为什么Java开发者需要关注RexUniNLU 在开发智能客服系统时,我们经常遇到这样的问题:用户会用各种不同的表达方式询问同一件事。"快递怎么还没到"…...
免费会员源码网大盘点:从入门搭建到深度运营的全攻略
一、全球会员系统开源生态:技术架构与商业场景双驱动1. Bagisto Membership(Laravel生态)作为基于Laravel框架的会员管理解决方案,其核心优势在于:多商户支持:原生支持D2C、B2B2C等复杂商业模式,…...
终极指南:如何利用HTTPS-PORTAL与Docker Gen实现自动HTTPS配置的魔法
终极指南:如何利用HTTPS-PORTAL与Docker Gen实现自动HTTPS配置的魔法 【免费下载链接】https-portal A fully automated HTTPS server powered by Nginx, Lets Encrypt and Docker. 项目地址: https://gitcode.com/gh_mirrors/ht/https-portal HTTPS-PORTAL是…...
问题1 开播后 观众端第一次进直播间 直播间没有画面 需要 主播重新进直播页面 观众端才有画面问题2 上面的流程走完 观众重新进直播间 直播间看不到画面问题3 不能多观众收看直播啊
需要docker srs webrtc websockdocker cmd 中 启动 srsset CANDIDATElongwen.natapp1.cc && docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8000:8000/udp -p 8000:8000/tcp --env CANDIDATE%CANDIDATE% --env SRS_RTC_TCP_ENABLEDon --env SRS_RTC_TCP_PORT8000 …...
Win11+Ubuntu22.04双系统避坑指南:如何正确分配分区空间(含CUDA安装建议)
Win11Ubuntu 22.04双系统分区策略与CUDA开发环境配置实战 作为一名长期在深度学习领域工作的开发者,我经历过无数次双系统安装的"血泪史"。特别是当项目 deadline 临近,却因为分区不当导致 CUDA 无法安装时,那种绝望感至今难忘。本…...
深圳 SEO 关键词推广的常见方法有哪些_深圳 SEO 关键词推广与竞价排名有何不同
深圳 SEO 关键词推广的常见方法有哪些 在数字化营销的时代,深圳 SEO 关键词推广已经成为企业提升网站曝光率和吸引潜在客户的重要手段。究竟有哪些常见的深圳 SEO 关键词推广方法呢?本文将详细探讨这些方法,帮助你更好地理解和实践深圳 SEO …...
三极管的混合π模型
混合π模型如下图所示。 要用这个模型需要确定的参数有、、和。它们的公式如下。...
