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开源操作系统 选择图片中的镜像进行下载 此处一定要选择稍后安装系统

基于springboot+vue框架实现的环保网站+文档+免费远程调试

项目介绍; 基于java(springboot)框架实现的环保网站 系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 前台功能: 1.首页:展示环保网站的最新动态、重要公告等信息。 2.濒危生物:提供濒危生物的相关信息以及保护措施。 3.…

unity获取所有子物体位置,再把获取到的位置重新随机分配给子物体(不含父物体)

unity获取所有子物体位置&#xff0c;再把获取到的位置重新随机分配给子物体&#xff08;不含父物体&#xff09; /// <summary> /// 给所有子物体随机分配位置 /// </summary> void RandomLocation() {// 获取当前物体下的所有子物体Transform[] childTransforms…

学习笔记——一些数据转换脚本(Python)

目录 文章目录 目录学习笔记——一些数据转换脚本&#xff08;Python&#xff09;json2YOLO&#xff08;txt&#xff09;VOC&#xff08;xml&#xff09;2YOLO&#xff08;txt&#xff09;image2h5json2npz 学习笔记——一些数据转换脚本&#xff08;Python&#xff09; 注&…

洛谷【入门1】顺序结构

洛谷【入门1】顺序结构 Hello,World!题目描述样例 #1样例输入 #1样例输出 #1 输出字符菱形题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 超级玛丽游戏题目背景题目描述输入格式输出格式 AB Problem题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 字…

C语言经典例题(23) --- 2的n次方计算、按照格式输入并交换输出、字符转ASCII码、计算机表达式的值、计算带余除法

文章目录 1.2的n次方计算2.按照格式输入并交换输出3.字符转ASCII码4.计算机表达式的值5.计算带余除法 1.2的n次方计算 题目描述&#xff1a; 不用累计乘法的基础上&#xff0c;通过移位运算&#xff08;<<&#xff09;实现2的n次方的计算。 输入描述: 多组输入&#x…

常用特征分箱算法

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

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

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

flex吃干抹净

Flex 布局是什么&#xff1f; Flex 是 Flexible Box 的缩写&#xff0c;意为"弹性布局"&#xff0c;用来为盒状模型提供最大的灵活性。 .box{display: flex;//行内元素也可以使用flex布局//display: inline-flex; }display: flex; 使元素呈现为块级元素&#xff0c;…

nvm设置淘宝镜像

前端安装完 node 后&#xff0c;最好设置下淘宝的镜像源&#xff0c;不建议使用 cnpm&#xff08;可能会出现奇怪的问题&#xff09; npm config set registry https://registry.npmmirror.com 旧版不能用&#xff1a;npm config set registry https://registry.npm.taobao.org…

CentOS版本不同大小的各个版本区别

Everything版&#xff1a;这个版本包含了CentOS的所有软件组件&#xff0c;因此其体积相对较大&#xff0c;高达7G&#xff0c;甚至10G。它为用户提供了全面的软件包选择&#xff0c;无需再额外下载其他组件。DVD版&#xff1a;这个版本是CentOS的常用版本&#xff0c;也被称为…

时光清浅,百事从欢

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

SketchBook2014 下载地址及安装教程

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

【软件测试之因果图法】

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

水电智能远程抄表系统

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

详解Qt元对象系统

Qt库作为一款流行的跨平台C应用程序开发框架&#xff0c;其中的元对象系统是其核心特性之一。Qt元对象系统不仅提供了诸如信号槽&#xff08;Signals & Slots&#xff09;、属性系统&#xff08;Property System&#xff09;等功能&#xff0c;还实现了对C对象的运行时类型…

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

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

【LeetCode热题100】238. 除自身以外数组的乘积(数组)

一.题目要求 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 **不要使用除法&#xff0c;**且在…

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 将容器内的文件拷贝到宿主…