当前位置:网站首页>什么是分布式事务
什么是分布式事务
2022-08-09 06:44:00 【悬浮海】
全文:Java-微服务下的分布式事务介绍及其解决方案-目录导航
第一步:想要去解决一个问题,首先要知道问题是什么,所以先看:什么是分布式事务
一、什么是分布式事务
弄清楚什么是分布式事务之前,先来看一下什么是本地事务?
本地事务就是用关系数据库来控制事务,关系数据库通常都具有ACID特性,传统的单体应用通常会将数据全部存储在一个数据库中,会借助关系数据库来完成事务控制。(我们所熟知的MySQL事务)
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,以上是百度百科的解释。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证数据库中的数据一致性。
(1)在分布式系统中一次操作由多个系统协同完成,这种一次事务操作涉及多个系统通过网络协同完成的过程称为分布式事务。这里强调的是多个系统通过网络协同完成一个事务的过程,并不强调多个系统访问了不同的数据库,即使多个系统访问的是同一个数据库也是分布式事务,如下图

(2)另外一种分布式事务的表现是,一个应用程序使用了多个数据源连接了不同的数据库,当一次事务需要操作多个数据源,此时也属于分布式事务,当系统作了数据库拆分后会出现此种情况。

上面两种分布式事务表现形式第一种用的最多
二、事务的ACID特性
2.1、原子性(A)
所谓的原子性就是说,在整个事务中的所有操作,要么全部完成,要么全部不做,没有中间状态。对于事务在执行中发生错误,所有的操作都会被回滚,整个事务就像从没被执行过一样。
2.2、一致性(C)
事务的执行必须保证系统的一致性,就拿转账为例,A有500元,B有300元,如果在一个事务里A成功转给B50元,那么不管并发多少,不管发生什么,只要事务执行成功了,那么最后A账户一定是450元,B账户一定是350元。
2.3、隔离性(I)
所谓的隔离性就是说,事务与事务之间不会互相影响,一个事务的中间状态不会被其他事务感知。
2.4、持久性(D)
所谓的持久性,就是说一单事务完成了,那么事务对数据所做的变更就完全保存在了数据库中,即使发生停电,系统宕机也是如此。
边栏推荐
猜你喜欢

普罗米修斯原理及节点发布

力扣 636. 函数的独占时间

Altium designer software commonly used the most complete package library, including schematic library, PCB library and 3D model library

报错:FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS重大开销和将disab补充道

pycharm环境包导入到另外一个环境

Integer 线程安全的

C# 利用iTextSharp画PDF

治疗消化性溃疡—Toronto Research Chemicals 甘氨酸铝

The JVM thread state

Search 1688 product interface by image (item_search_img-search 1688 product by image (Politao interface) code docking tutorial
随机推荐
shardingsphere数据分片配置项说明和示例
XxlJobConfig分布式定时器任务管理XxlJob配置类,替代
C语言实现顺序栈和链队列
字节跳动面试题之镜像二叉树2020
输入框最前面添加放大镜&&background-image和background-color冲突问题
Introduction and use of BeautifulSoup4
中英文说明书丨CalBioreagents 山羊抗人白蛋白,IgG组分
默默重新开始,第一页也是新的一页
Simple Factory Pattern
The Integer thread safe
Inception V3 闭眼检测
pycharm环境包导入到另外一个环境
AD的library中 库文件后缀有.intlib .schlib .pcblib 的区别
找出数组中不重复的值php
io.lettuce.core.RedisCommandTimeoutException Command timed out
crc calculation
MongDb query method
集合内之部原理总结
线程的6种状态
像天才一样思考:如何培养自己的创造力?