分布式事务专题之1、什么是分布式事务?

本文介绍了事务的基本概念,包括本地事务和分布式事务。本地事务是指在同一数据库中执行的操作,而分布式事务涉及不同地点的多个参与者。数据库事务的四大特性——一致性、原子性、隔离性和持久性被详细阐述。接着,解释了分布式系统的概念,并指出在网络环境中,分布式事务的正确性保障变得复杂。最后,引入了CAP理论和Base理论作为解决分布式事务问题的基础。
摘要由CSDN通过智能技术生成

目录

1. 前言

什么是分布式事务?介绍这个之前,先来了解一下这几个问题

  1. 什么是事务?
  2. 什么是本地事务?
  3. 什么是分布式?
  4. 什么是分布式事务?

2. 什么是事务?

完成某件事情,可能有多个参与者需要执行多个步骤,最终多个步骤要么全部成功,要么全部失败。

举个例子:微信上A给B转账100元,A账户减少100,B账户增加100,这就是一个事务,这个操作中要么都成功,要么都失败。

事务的场景有很多,参与者也是多种多样

  1. 用户注册成功发送邮件,包含2个操作:db中插入用户信息,给用户发送邮件,主要的2个参与者:db、邮件服务器
  2. 使用支付宝充值话费,包含2个操作:支付宝账户资金减少,手机余额增加,主要的2个参与者:支付宝账户、手机号服务商账户

事务的参与者是多种多样的,不过本文我们主要以db中的事务来做说明。

3. 什么是本地事务?

本地事务,通俗点理解:即事务中所有操作发生在同一个数据库中的情况。

比如A给B转账,A和B的账户位于同一个数据库中。

通常我们用的都是关系型数据库,比如:MySQL、Oracle、SQL Server,这些数据库默认情况,这些db已经实现了事务的功能,即在一个db中执行一个事务操作,db本身就可以确保这个事务的正确性,而不需要我们自己去考虑如何确保事务的正确性。

4. 数据库事务的4大特性

4.1. 一致性(Consistency)

事务操作之后的结果和期望的结果是一致的,A给B转账100,事务结束之后,看到A的账户应该减少100,B的账户应该增加100,不会出现其他情况

4.2. 原子性(Atomicity)

事务的整个过程如原子操作一样,最终要么全部成功,或者全部失败,这个原子性是从最终结果来看的,从最终结果来看这个过程是不可分割的。

4.3. 隔离性(Isolation)

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

4.4. 持久性(Durability)

一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。当事务提交之后,数据会持久化到硬盘,修改是永久性的。

5. 什么是分布式?

完成某件事情有多个参与者,多个参与者分布在不同的机器中,这些机器之间通过网络或者其他方式进行通讯。

比如使用工行卡给支付宝充值,工行卡的账户位于工商银行的db中,而支付宝账户位于支付宝的db中,2个db位于不同的地方。

6. 什么是分布式事务?

分布式、事务这2个概念大家都理解了,那么分布式事务很容易理解了:事务的多个参与者分布在不同的地方。

单个db中我们很容易确保事务的正确性,但是当事务的参与者位于多个db中的时候,如何确保事务的正确性呢?

比如:A给B转账,A位于DB1中,B位于DB2中


     
     
  1. step1.通过网络,给DB1发送指令:给A账户减少100
  2. step2.通过网络,给DB2发送指令:给B账户增加100

step1成功之后,执行step2的时,网络出现故障,导致step2执行失败,最终:A减少了100,B却没有增加100,最终的结果和期望的结果不一致,导致了事务的失败。

在介绍分布式事务的解决方案之前,我们需要先了解另外2个概念:CAP和Base理论,这2个理论为分布式事务的解决提供了依据。

来源:http://www.itsoku.com/course/7/160
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值