二、分布式事务

目录

  • 二、分布式事务
    • 2.1 什么是分布式事务
    • 2.2 分布式事务产生的背景
    • 2.3 分布式事务产生的场景
    • 2.4 分布式事务理论
      • ==4.1 CAP理论==
      • 4.2 Base理论
    • 5、分布式事务的解决方案

二、分布式事务

2.1 什么是分布式事务

一组操作会产⽣多个数据库session会话 此时就会出现分布式事务

2.2 分布式事务产生的背景

1)数据库的数据量大,最终拆库拆表,把一个数据库中的数据,放到多台数据库中
⽐如: shardingSphere 再⽐如 springBoot项⽬配置多数据源等等

2)项目架构的转变
项⽬从单体架构->垂直架构->分布式架构->soa架构->微服务架构

2.3 分布式事务产生的场景

1) 跨数据库
⽐较典型的就是单体项⽬数据层进⾏拆库拆表,或者单体项⽬多数据源的情况

2)跨进程
⽐如多个服务访问的是同⼀个数据库 这种情况下 很少⻅ 但是照样会出现分布式事务

3)跨jvm进程,跨数据库
比较典型的就是微服务项目,一个事务的执行需要牵扯到多个服务,每个服务又有自己的数据库,跨项⽬ ⼜ 跨数据库

【总结】
不管是跨进程,还是跨数据库,还是多服务访问单数据库,都有一个本质的特点,操作时可能存在多个session会话,我们可以理解为如果一组操作会产⽣多个数据库session会话 此时就会出现分布式事务

2.4 分布式事务理论

4.1 CAP理论

CAP理论指:分布式事务中,不能同时满足一致性,可用性,分区容忍性

  • C:表示⼀致性(Consistency)
  • A : 表示可⽤性(Availability)
  • P:表示分区容忍性(Partition Tolerance)

一致性:一致性表示用户对数据的修改操作,在所有的副本中,要么全部执行成功,要么全部执行失败。(强调的是数据必须一致,允许锁等待和超时)

(⽐如: mysql的主从复制读写分离时,当对主库添加数据成功时 从库必须也添加成功 并且从从库中读取数据时读取的应该是最新的数据 不能出现主库添加数据后 从从库中读取的不是最新的数据⽐如在主从复制过程中读取从库 此时数据还没有复制过来 此时读取的可能就不是最新的数据 此时就不满⾜⼀致性了所以想要满⾜⼀致性 当主库添加数据时 需要把数据同步到从库 并且同步的时候需要锁定从库,不能让从库参与读取,等到同步完成之后再取消锁定 此时再读就是最新的数据了 此时就满⾜了⼀
致性)

可⽤性:表示数据库节点可⽤即可,即客户端访问数据的时候 不存在超时 错误响应 能够快速响应结果。此时节点中的数据可以⼀致 也可以不⼀致,可⽤性的关注点就是系统可⽤,访问时可以快速给响应即可。

(⽐如 mysql的读写分离 当对主机添加数据时,从机会复制这条数据 当客户端读取从机时 不能超
时报错必须得有响应。此时允许读取的数据不是最新的。从机还不能被锁定。)

分区容忍性:表示把存储系统部署在多个节点中,并且这些节点在不同的⽹络节点中,这就形成了⽹络分区,由于⽹络问题节点之间的通讯可能失败,分区容忍性表示 就算节点通讯失败 照样能对外提供服务

【总结】一致性和可用性是矛盾的
在这里插入图片描述

4.2 Base理论

对 cap中的ap模式做客一个拓展,它牺牲了一致性,换来可用性

在base理论中 强调了三点:

1)基本可用

是指在分布式系统中 如果出现故障,允许系统损失部分功能,但是要保证系统基本可⽤ ⽽不是整个系统死掉(⽐如我们购买⽕⻋票时 下订单经常出错 当下订单功能出错时 我们还可⽤正常查询⻋票 ⽽不是整个12306瘫痪)

2)软状态
软状态指允许系统存在中间状态,中间状态不会影响系统的整体可⽤性,允许系统各个节点中数据同步延迟。

3)最终一致性
最终⼀致性表示 允许分布式系统中各个节点的数据存在不⼀致的情况 但是经过⼀段时间,各
个节点上的数据 最终还是⼀致的。

5、分布式事务的解决方案

强⼀致性 cp:XA协议(数据库级别的规范,需要数据库的支持)

弱⼀致性 ap

  • TCC
  • 可靠消息⼀致性
  • 其他⽅式

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

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

相关文章

PTA----->幸运数字

一,题目: Rain Sure同学定义了幸运数字——如果一个正整数n是幸运数字,那么当且仅当n和(n1)/2都是素数。 现在给定q次查询: 第i次询问给定两个正整数li​,ri​,请你求出在区间[li​,ri​]中有多少个数字是幸运数字。…

我的第一个 VTK 程序

我的第一个 VTK 程序 我的第一个 VTK 程序VTK 可视化流程源程序运行结果 我的第一个 VTK 程序 环境: Visual Studio 2022 CommumityQt 6.2.3 MSVC2019 64位VTK 9.3.0 不会Cmake编译VTK库?看这个:使用 Cmake 对 VTK-9.3.0 进行编译 不会在…

代码随想录算法训练营第二十五天|17.电话号码的字母组合、39.组合总和

文档链接:https://programmercarl.com/ LeetCode17.电话号码的字母组合 题目链接:​​​​​​​​​​​​​​https://leetcode.cn/problems/letter-combinations-of-a-phone-number/ 思路: 理解本题后,要解决如下三个问题&…

Apache Hive的基本使用语法(一)

一、数据库操作 创建数据库 create database if not exists myhive;查看数据库 use myhive; desc database myhive;创建数据库并指定hdfs存储 create database myhive2 location /myhive2;删除空数据库(如果有表会报错) drop database myhive;…

基于jsp+mysql+Spring的SpringBoot招聘网站项目

基于jspmysqlSpring的SpringBoot招聘网站项目(完整源码sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀…

图的应用之关键路径

1.AOV网&#xff08;Activity On Vertex NetWork&#xff09; 用DAG图表示一个工程。顶点表示活动&#xff0c; < V i , V j > <V_i,V_j> <Vi​,Vj​>表示 V i V_i Vi​必须先于活动 V j V_j Vj​进行 2.拓扑排序 &#xff08;1&#xff09;拓扑排序定义 …

同一个主机配置多个SSH key

使用git时&#xff0c;我们可能一个git客户端使用多个git服务器&#xff0c;比如github&#xff0c;自建gitlab&#xff0c;gitee&#xff0c;为了防止提交混乱&#xff0c;所以需要一一对应生成公私钥。 第一步&#xff1a; 使用ssh-keygen生成多对密钥对&#xff0c;比如&…

静态NAT配置

静态NAT配置 配置命令&#xff08;详细&#xff09;&#xff1a;ip nat inside source static 协议 内部IP地址 端口 外部IP地址 端口 extendable 例如下图&#xff1a; 配置命令&#xff1a; 第一步&#xff08;说明通告地址&#xff09;&#xff1a;ip nat inside source sta…

Chrome浏览器 安装Vue插件vue-devtools

前言 vue-devtools 是一个为 Vue.js 开发者设计的 Chrome 插件。它可以让你更轻松地审查和调试 Vue 应用程序。与普通的浏览器控制台工具不同&#xff0c;Vue.js devtools 专为 Vue 的响应性数据和组件结构量身定做。 1. 功能介绍 组件树浏览&#xff1a;这个功能可以让你查…

信息工程大学第五届超越杯程序设计竞赛(同步赛)题解

比赛传送门 博客园传送门 c 模板框架 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define e…

MySQL 索引失效场景总结

查询条件有 or 假设在 customer_name 字段设置了普通索引&#xff0c;执行以下 sql&#xff1a; # type: ref, possible_keys: idx_customer_name, key: idx_customer_name # idx_customer_name 索引生效 explain select id, customer_name, company_name from t_user_info w…

babyAGI(3)-COOPERATIVE_MODE

babyAGI中有cooperative模式&#xff0c;其核心是调用ray库&#xff0c;实现分布式多进程执行任务。 从BabyAGI的源码中&#xff0c;我们可以学习ray core的使用。 1. Ray核心概念 1.1 Tasks Ray 允许在单独的 Python 工作线程上异步执行任意函数。 这些异步执行的函数被称为…

JavaSE:继承和多态(下篇)

目录 一、前言 二、多态 &#xff08;一&#xff09;多态的概念 &#xff08;二&#xff09;多态实现条件 &#xff08;三&#xff09;多态的优缺点 三、重写 &#xff08;一&#xff09;重写的概念 &#xff08;二&#xff09;重写的规则 &#xff08;三&#xff09;重…

Ubuntu上安装d4rl数据集

Ubuntu上安装d4rl数据集 D4RL的官方 github: https://github.com/Farama-Foundation/D4RL 一、安装Mujoco 1.1 官网下载mujoco210文件 如果装过可以跳过这步 链接&#xff1a;https://github.com/deepmind/mujoco/releases/tag/2.1.0 下载第一个文件即可。我这里是在windo…

专升本-信息安全

信息安全&#xff1a; 1.信息安全的基本属性&#xff1a;保密性&#xff0c;完整性&#xff0c;可用性 信息本身的安全是指保证信息的保密性&#xff08;非授权用户不能访问信息&#xff09;&#xff0c;完整性&#xff08;信息正确&#xff0c;完整&#xff0c;违背篡改&…

win10怎么设置屏幕保护,win10设置屏幕保护方法

电脑屏幕保护的作用主要有三个,第一,可以防止电脑因无人操作而使显示器长时间显示同一个画面,导致加速老化而缩短显示器寿命。第二,防止你离开电脑后屏幕上的隐私被偷窥。第三,大幅度降低屏幕亮度,有一定的省电作用。而Win10系统中呢是可以设置屏幕保护的,如果你想了解具…

uniapp微信小程序消息订阅详解

一、微信公众平台申请订阅模板 注意&#xff1a;订阅信息 这个事件 是 当用户 点击的时候触发 或者 是 支付成功后触发&#xff0c; 用户勾选 “总是保持以上选择&#xff0c;不再询问” 之后或长期订阅&#xff0c;下次订阅调用 wx.requestSubscribeMessage 不会弹窗&#xf…

FastAPI+React全栈开发11 开始使用FastAPI

Chapter03 Getting Started with FastAPI 11 Summary FastAPIReact全栈开发11 开始使用FastAPI Arguably the most important part of our FARM stack is going to be the application programming interface(API). The AIP is the brain of our system, it implements the …

【最后一天!】月底 京东云服务器特价 价格更低 幻兽帕鲁、雾锁王国 32G仅210/3个月

本文纯原创&#xff0c;侵权必究 【云服务器推荐】价格对比&#xff01;阿里云 京东云 腾讯云 选购指南视频截图 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更新】2024年-幻兽帕鲁服务器…

CSP:内容安全策略详解

在当今的网络安全环境中&#xff0c;内容安全策略&#xff08;Content Security Policy&#xff0c;简称CSP&#xff09;扮演着至关重要的角色。CSP是一种由浏览器实施的安全机制&#xff0c;旨在减少和防范跨站脚本攻击&#xff08;XSS&#xff09;等安全威胁。它通过允许网站…