Seata框架实现分布式事务(一)CAP理论

1、什么是事务

事务是指一系列数据库操作,它们被看作是一个逻辑单元,并且要么全部成功地执行,要么全部失败地回滚到初始状态,以确保数据的一致性和完整性。事务具有以下四个特性,通常被称为 ACID 特性:

所有的事务都要满足ACID原则:即

        微服务的业务比较复杂,可能一个业务就要跨越多个服务,每个服务又会有自己的数据库。此时,如果再依靠数据库本身的特性,就不一定能保证整个业务满足ACID原则了。

2、分布式服务案例:

       在这个下单业务发生时,首先创建订单写入订单服务数据库,然后希望依次调用账户服务的扣减余额、库存服务的扣减商品库存。每个微服务都有自己独立的数据库,即独立的事务。

      分布式事务:在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。

      如果,在创建订单和扣减余额都完成后,到了减库存的步骤,库存不足无法完成减库存的操作,但是又无法回滚了。我们希望订单服务、账户服务、库存服务要么一起成功,要么一起失败,这时就需要引入分布式事务来保证一致性。

3、CAP定理

1998年,加州大学的计算机科学家 EricBrewer提出,分布式系统有三个指标

  • Consistency(一致性)
  • Availability(可用性).
  • Partition tolerance (分区容错性)

分布式系统无法同时满足这三个指标,这个结论就叫做 CAP 定理。

1、一致性:用户访问分布式系统中的任意节点,得到的数据必须一致

2、可用性:用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝

3、分区容错性:因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区,在集群出现分区时,整个系统也要持续对外提供服务。

node2和node3之间由于网络原因造成断联,形成了两个独立分区:

node1更新数据,同步到了node2,但是无法连接到node3,但是整个集群必须对外提供服务;

  1. 如果想要维持三个节点之间的数据一致性,就必须得让用户暂时无法访问node3(可是node3又是健康的,不让别人访问,不满足可用性),等待node2和node3恢复链接,同步数据之后,再让用户访问node3。满足了:一致性-分区容错性(CP)
  2. 如果要满足可用性,那就不能阻塞对node3的访问请求,但是不阻塞又满足不了数据一致性;

像图上这种情况,我们只能满足下面的的其中一个:

  • 一致性-分区容错性(CP)
  • 可用性-分区容错性(AP)

思考:elasticsearch集群是CP还是AP?
ES集群出现分区时,故障节点会被剔除集群,数据分片会重新分配到其它节点,保证数据一致。因此是低可用性,高一致性,属于CP 。

4、BASE理论

3.1、BASE理论是对CAP的一种解决思路,包含三个思想:

          基本可用、软状态、最终一致

  1. Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  2. Soft state(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  3. Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

3.2、分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论:

  • AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致
  • CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态

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

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

相关文章

VMware安装kylin系统

安装成功画面 1.点击如下链接,下载iso镜像 openKylin开源操作系统 选择图片中的镜像进行下载 此处一定要选择稍后安装系统

常用特征分箱算法

特征分箱是构建信用评分过程中最重要的一个环节。特征分箱是对连续变量离散化的一种简称,对于连续型变量,需要对其连续值进行拆分,并进行后续的分箱调整工作; 对于离散型变量,通常要根据每个离散值计算其坏样本占比或…

创新实训2024.04.11日志:self-instruct生成指令

1. 参考文献 代码:https://github.com/yizhongw/self-instruct论文:https://arxiv.org/abs/2212.10560 2. 前沿论文阅读 2.1. self-instruct技术的优势 作者在文章中提到: The recent NLP literature has witnessed a tremendous amount …

时光清浅,百事从欢

裙身主图案采用寓意丰富的石榴印花石榴花开红火,枝叶茂盛恰好契合“时来运转”的主题希望宝贝们都能如石榴般坚韧生长,好运连连裙型设计深蕴国风美学,融合现代剪裁工艺将古典韵味与时尚元素完美交融领口处巧妙运用中式立领设计既保留了传统服…

SketchBook2014 下载地址及安装教程

SketchBook是一款专业级别的绘图与绘画软件。它提供了丰富的绘画工具和创意功能,适用于艺术家、插画师、设计师和数字艺术爱好者。SketchBook具有直观的用户界面,简单而强大的绘制工具,能够帮助用户在数字平台上创造出精美的艺术作品。 Sket…

【软件测试之因果图法】

【软件测试之判断表法】(蓝桥课学习笔记) 1、因果图法的概念 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种情况的组合。因果图(Cause-Effect-Graphing)提供了把规则转…

水电智能远程抄表系统

水电智能远程抄表系统是一种应用先进技术实现水电抄表的智能化管理系统,通过远程抄表、数据传输和智能分析,实现了对水电使用情况的实时监测和管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程抄表:系统能够…

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 以下关于OSPF Sham Link的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;为了使VPN流量通过MPLS VPN骨干网转发&#xff0c;Sham Link的路…

docker 安装初体验

文章目录 前言简介一、准备工作1.1 安装docker1.2 查看版本1.3 启停docker 二、docker命令介绍2.1 查看doeker容器2.2 查看doeker镜像2.3 docker基本命令 三、下载镜像、创建容器3.1 下载centos镜像3.2 测试运行镜像3.3 将宿主机的文件拷贝到容器上3.4 将容器内的文件拷贝到宿主…

RA4000CE为汽车动力传动系统提供解决方案

目前汽车电气化的水平越来越高&#xff0c;其中比较显著的一个发展方向就是将发动机管理系统和自动变速器控制系统&#xff0c;集成为动力传动系统的综合控制(PCM)。作为汽车动力的核心部件&#xff0c;通过电子系统的运用&#xff0c;将外部多个传感器和执行环节的数据进行统一…

深度学习pytorch实战第P3周--实现天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

一文了解HTTPS的加密原理

HTTPS是一种安全的网络通信协议&#xff0c;用于在互联网上提供端到端的加密通信&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器之间传输时的机密性、完整性和身份验证。HTTPS的加密原理主要基于SSL/TLS协议&#xff0c;以下详细阐述其工作过程&…

常见程序故障排查及程序配置

文章目录 故障排查基础关机/重启/注销系统信息和性能查看磁盘和分区⽤户和⽤户组⽹络和进程管理常⻅系统服务命令⽂件和⽬录操作⽂件查看和处理打包和解压RPM包管理命令YUM包管理命令DPKG包管理命令APT软件⼯具 分析工具JDK自带分析工具jpsjstatjinfojmapjhatjstackjcmd GUI分析…

QT:QMainWindow、ui界面、资源文件的添加、信号和槽

1.练习&#xff1a;使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

算法题解记录8+++爬楼梯(百日筑基)

题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…

KVM虚拟机

文章目录 QEMU-KVM介绍虚拟网卡流程网卡透访流程 QEMU-KVM介绍 QEMU ● QEMU是一个主机上的VMM (Virtual machine monitor), 通过动态二进制模拟CPU&#xff0c;并提供一系列的硬件模型&#xff0c;使Guest OS能够与Host硬件交互。 ● QEMU的代码中有完整的虚拟机实现&#xf…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

WEB漏洞——XXE

文章目录 前言一、XXE简述及XML基础XXE简述XML基础xml简介文档格式xml树结构xml其它xml语法1、格式良好的xml2、编写第一段XML代码DTD介绍内部文档声明(即DTD在XML源文件中)外部文档声明(DTD位于XML源文件的外部)XML文档构建模块Elements(元素)数量词的用法Attributes(属…