Seata事务管理---分布式事务详解

1 什么是事务

       事务,一般指数据库事务,就是将多条SQL语句一起执行的功能,就称为一个数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。

       数据库事务具有4个属性,分别是:原子性,一致性,隔离性和持久性,也被称为ACID特性。

  • Atomicity(原子性):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复到事务开始前的状态,就像这个事务从来没有执行过一样,也被称为数据回滚。
  • Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。完整性包括外键约束、应用定义的等约束不会被破坏。
  • Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
  • Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

2 什么是分布式事务

       分布式事务是分布式系统里的一个重要属性,特指事务的发起者、资源及资源管理器和事务协调者分别位于分布式系统的不同节点之上。从本质上来说,分布式事务就是为了保证在分布式场景下,数据操作的正确执行。

       就比如银行跨行转账:在农业银行的A用户要给在工商银行的B用户转100块钱,那我们是不是就要保证A用户的余额-100,B用户的余额+100,这就是分布式事务。简单点来说就是避免银行的系统出现错误,导致A用户已经转账成功,但B用户没有收到钱,A用户的余额-100而B用户的余额没有+100.

       分布式事务也部分遵守ACID原则:

  • 原子性:严格遵循
  • 一致性:事务完成后的一致性严格遵循;事务中的一致性可适当放宽
  • 隔离性:并行事务间不可影响;事务中间结果可见性允许安全放宽
  • 持久性:严格遵循

3 分布式系统简述

       分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。简单点来讲就是:将我们微服务架构中拆分出来的服务分别部署在不同的服务器上,这就是分布式微服务架构。当然,这只是字面上的理解,真正的分布式系统需要考虑很多东西,比如:分布式锁,分布式事务,分布式数据库等等。

       可以说分布式是为了减轻一台服务器的压力,利用多台服务器来共同承担压力,而微服务则是分散业务能力。分布式是为了分散压力,微服务是为了分散能力。

       微服务和分布式之间的联系可以理解为:分布式可以是微服务,当微服务不一定是分布式,因为微服务可以部署在一台服务器上。分布式系统遵循CAP原则,但不能同时满足三个。

一致性(Consistency): 指强一致性,在写操作完成后开始的任何读操作都必须返回该值,或者后续写操作的结果。也就是说,在一致性系统中,一旦客户端将值写入任何一台服务器并获得响应,那么之后client从其他任何服务器读取的都是刚写入的数据。

       一致性又分为强一致性,弱一致性和最终一致性,因为在分布式系统中,一般会选择牺牲一些一致性来换取可用性和分区容错性。(注意:牺牲一致性不代表完全抛弃一致性,而是将强一致性变成弱一致性)

  • 强一致性: 也称为原子一致性,就是说在任意时刻,所有节点中的数据是一样的。就比如在我们的关系型数据库中,必须等所有的数据同步后,才能正常的对外提供服务。
  • 弱一致性: 弱一致性就是数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,则是弱一致性。比如买火车票,虽然显示是还有余票的,但是去买的时候就提示票已售空,这就是弱一致性。
  • 最终一致性: 最终一致性和弱一致性类似,但他们的不同点在于:弱一致性即使过了不一致时间窗口,后续的读取也不一定能保证一致,而最终一致过了不一致窗口后,后续的读取一定一致。

可用性(Availability): 可用性(高可用)是指:每次向未崩溃的节点发送请求,总能保证收到响应数据(允许不是最新数据)

分区容忍性(Partition tolerance): 分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,也就是说,服务器AB 发送给对方的任何消息都是可以放弃的,也就是说A和B可能因为各种意外情况,导致无法成功进行同步,分布式系统要能容忍这种情况。除非整个网络环境都发生了故障。

       一般情况下,分布式系统中,必须满足 CAP 中的 P,此时只能在 C/A 之间作出取舍。因为如果选择了CA ,舍弃了P,说白了就是一个单体架构。而CA的选择,一般遵循Base理论。

4 分布式事务解决方案

       分布式事务的解决放方案有很多种,比如:2PC,3PC,TCC,SEGA事务等等,每一种事务解决方案都有他自己的优缺点和相对应的应用场景。

       在分布式架构下,每个节点只知晓自己操作的失败或者成功,无法得知其他节点的状态。当一个事务跨多个

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值