分布式事务-介绍

news2024/11/25 20:35:48

请添加图片描述
个人名片:

博主:酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 一、分布式事务问题
    • 1. 本地事务
    • 2. 分布式事务
    • 3. 演示分布式事务问题

一、分布式事务问题

1. 本地事务

本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:

ACID
在这里插入图片描述

2. 分布式事务

分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:

  • 跨数据源的分布式事务
  • 跨服务的分布式事务
  • 综合情况

在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例,包括下面几个行为:

  • 创建新订单
  • 扣减商品库存
  • 从用户账户余额扣除金额

完成上面的操作需要访问三个不同的微服务和三个不同的数据库。

订单的创建、库存的扣减、账户扣款在每一个服务和数据库内是一个本地事务,可以保证ACID原则。

但是当我们把三件事情看做一个"业务",要满足保证“业务”的原子性,要么所有操作全部成功,要么全部失败,不允许出现部分成功部分失败的现象,这就是分布式系统下的事务了。
此时ACID难以满足,这是分布式事务要解决的问题

3. 演示分布式事务问题

我们通过一个案例来演示分布式事务的问题:

1)创建数据库,名为seata_demo,然后导入课前资料提供的SQL文件(seata-demo.sql)
2)导入课前资料提供的微服务(seata-demo)

微服务结构如下:

在这里插入图片描述

seata-demo:父工程,负责管理项目依赖

  • account-service:账户服务,负责管理用户的资金账户。提供扣减余额的接口
  • storage-service:库存服务,负责管理商品库存。提供扣减库存的接口
  • order-service:订单服务,负责管理订单。创建订单时,需要调用account-service和storage-service

3)启动nacos、所有微服务

启动微服务前需要修改MySQL配置,符合自己设置
在这里插入图片描述

4)测试下单功能,发出Post请求:
如图:
在这里插入图片描述
数据库结果:
在这里插入图片描述
再次尝试

在这里插入图片描述
数据库结果:
在这里插入图片描述

测试发现,当库存不足时,会扣减余额而不扣减库存。
此时不会回滚,出现了分布式事务问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K8S:pod资源限制及探针

文章目录 一.pod资源限制1.pod资源限制方式2.pod资源限制指定时指定的参数(1)request 资源(2) limit 资源(3)两种资源匹配方式 3.资源限制的示例(1)官网示例(2&#xff0…

QSlider风格设置

QT的滑动条在开发的过程中经常使用,默认的QSlider风格比较简陋,一般达不到UI设计的效果,本篇记录一个QSlider使用过程中风格的设置。 1.qss常用的字段属性 1.1背景属性 属性值意思background Background背景属性background-colorBrush背景…

【探索C++】string类详解

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

pytest一些常见的插件

Pytest拥有丰富的插件架构,超过800个以上的外部插件和活跃的社区,在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址:http://plugincompat.herokuapp.com/ 1、pytest-html&#xff1…

浏览器缓存学习笔记

浏览器存储 示例&#xff1a;网页的搜索历史 application->Local Storage&#xff0c;数据通过key-value保存 保存数据 <button onclick"saveData()">点击保存数据</button><script type"text/javascript">let p { name: Jack, ag…

智慧食堂操作教程,建议收藏!

医院食堂作为医疗机构不可或缺的一部分&#xff0c;不仅要提供高质量、健康的餐饮选择&#xff0c;还需要为患者和医护人员提供便捷的用餐体验。 随着科技的不断发展&#xff0c;智慧收银系统应运而生&#xff0c;它已经在医疗机构中引起了广泛关注。智慧收银系统不仅为患者和医…

linux 设置打开文件数

可以使用下面的文件进行设置 /etc/security/limits.d/90-nproc.conf 先来看/etc/security/limits.d/90-nproc.conf 配置文件&#xff1a; [root ~]# cat /etc/security/limits.d/90-nproc.conf # Default limit for number of users processes to prevent # accidental fork…

【产品运营】如何提升B端产品竞争力(下)

“好产品不是能力内核&#xff0c;做好产品的流程才是” 一、建立需求池和需求反馈渠道 需求池管理是B端产品进化最重要的环节&#xff0c;它的重要性远超产品设计、开发等其他环节。 维护需求池有主动和被动两种。 主动维护是产品经理在参与售前、迭代、交付、售后、竞品分…

PMP项目管理课程介绍-2023

8个项目管理工具模板、60个项目管理甘特图标模板、赠送30本项目管理电子书 &#xff08;PMI-PMP&#xff09;国际项目经理认证 培训简章 “21世纪是项目管理的世纪” “战略规划项目管理企业竞争力” 课程背景 “PMP”&#xff0c;即Project Management Professional&#xff0…

Yolov5创新:NEU-DET钢材表面缺陷检测,优化组合新颖程度较高,CVPR2023 DCNV3和InceptionNeXt,涨点明显

1.钢铁缺陷数据集介绍 NEU-DET钢材表面缺陷共有六大类&#xff0c;分别为&#xff1a;crazing,inclusion,patches,pitted_surface,rolled-in_scale,scratches 每个类别分布为&#xff1a; 训练结果如下&#xff1a; 2.基于yolov5s的训练 map值0.742&#xff1a; 2.1 Incepti…

1978-2021年全国各省城镇与农村恩格尔系数数据

1978-2021年全国各省城镇与农村恩格尔系数数据 1、时间&#xff1a;1978-2021年 2、指标&#xff1a;城镇恩格尔系数、农村恩格尔系数 3、范围&#xff1a;31省市 4、来源&#xff1a;各省年鉴 5、用途&#xff1a;反应居民生活质量 6、指标解释&#xff1a; 恩格尔系数…

C++---链表

1、链表 1.1、链表的结构 每个链表开头都有一个头指针Head尾节点的指针域为NULL&#xff0c;用于判断此列表是否结束 如果一个链表开始就为NULL&#xff0c;那么该链表为空链表 链表中的先后不代表在真实内存中的位置&#xff0c;只是单纯的逻辑上关系 1.2、创建链表 我们首…

Spring常见面试题总结

什么是Spring Spring是一个轻量级Java开发框架&#xff0c;目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题&#xff0c;以提高开发效率。它是一个分层的JavaSE/JavaEE full-stack&#xff08;一站式&#xff09;轻量级开源框架&#xff0c;为开发Java应用程序…

iPhone升级iOS17后待机模式不能用、没反应?这7个方法快速解决!

iPhone待机模式是苹果为iOS17版本加入的新功能之一&#xff0c;当我们不用iPhone 时&#xff0c;能将它随手放在一旁&#xff0c;并以横向全屏的方式观看时钟与App小工具资讯等。 不过有些果粉发现他们的iPhone待机模式不能用、没反应&#xff0c;照着步骤操作也无法进入iPhon…

MX6LL控制LED设备

注&#xff1a;本篇基于野火IMX6LL PRO开发板 一.什么是驱动程序 驱动程序&#xff08;Driver&#xff09;是一种软件&#xff0c;用于充当操作系统与硬件设备之间的桥梁&#xff0c;使它们能够互相通信和交互。驱动程序的主要功能是提供一个标准化的接口&#xff0c;使操作系…

从0搭建夜莺v6基础监控告警系统(一):基础服务安装

文章目录 1. 写在前面1.1. 官方文档传送门1.2. 部署环境 2. 服务安装2.1. 基础设置2.2. 安装中间件2.3. 安装 nightingale-v62.4. 安装 VictoriaMetrics2.5. 安装 Categraf 3. 部署总结3.1. 安装总结 1. 写在前面 1.1. 官方文档传送门 项目介绍 架构介绍 仪表盘 黄埔营培训计…

来袭!SOLIDWORKS 2024 主要增强功能

在SOLIDWORKS软件使用过程中&#xff0c;我们知道您创建了出色的设计&#xff0c;您的出色设计也会得到构建。为了简化和加快从概念到制造产品的产品开发流程&#xff0c;SOLIDWORKS 2024 包含用户驱动的全新增强功能&#xff0c;重点关注&#xff1a; • 提高工作智能化程度。…

怎么在便携式手持嵌入式设备中实现安全的数字数据传输

为了实施附加的安全性&#xff0c;一些密码算法也可以指定一组不应从设备公开的常数值。这些存储在设备中的&#xff0c;需要防止未经授权暴露的秘密密钥和秘密值在一系列文章中被称为“秘密密钥”。 秘密密钥存储在设备内部&#xff0c;甚至在设备的整个生命周期中都存在。设…

浅谈双十一背后的支付宝LDC架构和其CAP分析

本人汤波&#xff0c;superthem.com 圆领超级个体创始人&#xff0c;Github page地址&#xff1a;https://tbwork.github.io/ 看到很多人在盗用我的文章&#xff0c;还标记成原创&#xff0c;进行收费&#xff0c;非常令人作呕。 我的所有技术文章全部免费阅读&#xff0c;大家…

在Python中 作用域与命名空间的坑

前言&#xff1a; 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 1. 命名空间 1.1 什么是命名空间 Namespace命名空间&#xff0c;也称名字空间&#xff0c;是从名字到对象的映射。 Python中&#xff0c;大…