springcloud3 分布式事务实现逻辑思想2

2023-09-18 19:21:18

一 分布式事务逻辑

1.1 CAP理论

CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这3个基本需求,最多只能同时满足其中的2个。

总结:

1.2  CAP的应用场景

假如现在有这样的场景:

用户访问了N1,修改了D1的数据。用户再次访问,请求落在了N2。此时D1和D2的数据不一致。

接下来:

保证一致性:此时D1和D2数据不一致,要保证一致性就不能返回不一致的数据,可用性无法保证。

保证可用性:立即响应,可用性得到了保证,但是此时响应的数据和D1不一致,一致性无法保证。

所以,可以看出,分区容错的前提下,一致性和可用性是矛盾的。

1.3 BASE理论

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

  • Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。

  • Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。

  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

1.4 分布式事务满足特性

1.首先满足事务特性:ACID

 2.而在分布式环境下,会涉及到多个数据库

分布式事务处理的关键是:

1.需要记录事务在任何节点所做的所有动作;

2.事务进行的所有操作要么全部提交,要么全部回滚。

目的是为了保证分布式系统中的数据一致性。

1.5 解决分布式事务的思路

分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论,有两种解决思路:

  • AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。

  • CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。

但不管是哪一种模式,都需要在子系统事务之间互相通讯,协调事务状态,也就是需要一个事务协调者(TC):这里的子系统事务,称为分支事务;有关联的各个分支事务在一起称为全局事务

更多推荐

Js中一些数组常用API总结

前端面试题库(面试必备)推荐:★★★★★地址:前端面试题库【国庆头像】-国庆爱国程序员头像!总有一款适合你!前言Js中数组是一个重要的数据结构,它相比于字符串有更多的方法,在一些算法题中我们经常需要将字符串转化为数组,使用数组里面的API进行操作。本篇文章总结了一些数组中常用的API,我们把它们分成两类,一类是会改变原

数据信息会有哪些风险,云数据库如何保护?

数据信息安风险是多种多样的,那么,云数据库如何规避并保护数据信息安全?今天安策带大家具体来了解数据信息会有哪些风险,云数据库将如何保护:数据泄露:不管是内部人员疏忽,还是恶意攻击、系统漏洞等等原因,数据泄露会导致敏感信息的暴露,损害其品牌的声誉和利益。数据损坏:损坏原因主要由自然灾害、人为或恶意攻击构成,从而导致无法预

容器核心技术之Namespace与Cgroup

容器是一种流行的虚拟化技术,它允许我们在同一台计算机上与其他进程在独立环境中运行进程。那么容器是如何做到这一点的呢?为此,容器是从Linux内核的一些新功能构建的,其中两个主要功能是“namespace”和“cgroup”。1.Namespace1.1Namespace简介Namespace(命名空间)技术是一种内核级

Nvme Spec 第一章节学习

@NvmeExpressBaseSpecification第一章简介1.1概述NVMExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCIExpress接口。注:在开发过程中,本规范被称为企业NVMHCI。然而,在完成之

YOLOv8『小目标』检测指南

前言目前博主课题组在进行物体部件的异常检测项目,项目中需要先使用YOLOv8进行目标检测,然后进行图像切割,最后采用WinCLIP模型进行部件异常检测但是在实际操作过程中出现问题,YOLOv8模型目标检测在大目标精确度不错,但是在小目标检测中效果极差我们之前的解决方案是扩大异常部件的目标检测范围,易于检测。但是缺点是会

stable diffusion在建筑行业应用

AI建筑研究室-帆哥投稿视频-AI建筑研究室-帆哥视频分享-哔哩哔哩视频点击观看AI建筑研究室-帆哥的全部投稿视频,在这里可以查看AI建筑研究室-帆哥最新发布、最多播放和最多收藏的视频。https://space.bilibili.com/2161614/videoHD▎ChatGPT接入自研AI工具集,为设计生产赋能

wkeOnDownload2与mbOnDownloadInBlinkThread

背景:最近开始实习(打工)生涯。需求:使用miniblink,显示网页,点击下载链接,可以实现下载。寻求大佬帮助,得到了wke.h版本的下载相关的代码。这里进行一些简单的分析:实际语句:wkeOnDownload2(webView,onDownloadCallback,nullptr);通过调用该函数实现:点击链接,实

SpringMVC之自定义注解

目录前言一、自定义注解1.Java注解简介2.注解的用处3.为什么要用注解4.自定义注解的应用场景5.注解的分类6.如何定义并使用自定义注解7.自定义注解三种使用案例案例一:案例二:案例三:二、Aop自定义注解的应用1.自定义注解类2.切面类3.Controller层前言随着Web开发的发展,越来越多的企业开始使用Sp

基于springboot+vue的便利店信息管理系统

博主主页:猫头鹰源码博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询文末联系获取项目介绍:本系统适合选题:便利店、便利店管理、商店管理等。系统采用springb

C++之operator()和构造函数区别与总结(二百三十)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:理解C+

MYSQL--事务

目录一、事物的概念:二、事务的ACID特点:1.原子性:2.一致性:3.隔离性:4.持久性:三、隔离性:1.事务之间的相互影响:(1)脏读:(2)不可重复读:(3)幻读:(4)丢失更新:2.Mysql的隔离级别:3.隔离级别作用范围:四、事务控制语句:1.commit提交事务:2.ROLLBACK回滚:3.使用回滚点:

热文推荐