当前位置:网站首页>什么是分布式事务
什么是分布式事务
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)
所谓的持久性,就是说一单事务完成了,那么事务对数据所做的变更就完全保存在了数据库中,即使发生停电,系统宕机也是如此。
边栏推荐
猜你喜欢
Fragments
普罗米修斯原理及节点发布
报错jinja2.exceptions.UndefinedError: ‘form‘ is undefined
力扣 636. 函数的独占时间
Flask failed to create database without error
当酷雷曼VR直播遇上视频号,会摩擦出怎样的火花?
The solution that does not work and does not take effect after VScode installs ESlint
长沙学院2022暑假训练赛(一)六级阅读
e-learning summary
Altium designer软件常用最全封装库,包含原理图库、PCB库和3D模型库
随机推荐
Use of PlantUML plugin in idea
P7 Alibaba Interview Questions 2020.07 Sliding Window Algorithm (Alibaba Cloud Interview)
Search 1688 product interface by image (item_search_img-search 1688 product by image (Politao interface) code docking tutorial
无重复的字符的最长子串
Go lang1.18入门精炼教程——第一章:环境搭建
字节跳动面试题之镜像二叉树2020
The singleton pattern
2022年7月小结
MongDb的查询方式
变压器的工作原理(图解,原理图讲解,一看就懂)
shardingsphere数据分片配置项说明和示例
leetcode 之盛水问题
我入职阿里后,才知道原来简历这么写
Use baidu EasyDL intelligent bin
细谈VR全景:数字营销时代的宠儿
逆向工程
APP product source data interface (taobao, jingdong/spelling/suning/trill platform details a lot data analysis interface) code and docking tutorial
ByteDance Interview Questions: Mirror Binary Tree 2020
Explain the wait() function and waitpid() function in C language in detail
数据库中间件-jdbi