分布式事务

1、事务

事务就是逻辑上的一组操作,要么执行,要么不执行。

数据库事务是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。

事务的四个特性(ACID)

原子性(Atomicity):事务作为一个整体被执行,事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;

一致性(Consistency):事务执行前后,数据保持一致。例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;

隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;

持久性(Durability):一个事务被提交后,他对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

并发事务带来的问题:

脏读:读取了还未提交的数据

丢失修改:两个事务访问并修改了数据,导致第一个数据的修改结果被丢失。

不可重复读:同一事物内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。

幻读:它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

SQL标准定义了哪些事务隔离级别:

读取未提交:会发生脏读、不可重复读、幻读

读取已提交:会出现不可重复读、幻读

可重复读:会出现幻读

可串行化:都不会出现

2、本地事务

起初,事务仅限于对单一数据库资源的访问控制,架构服务化以后,事务的概念延伸到了服务中。倘若将一个单一的服务操作作为一个事务,那么整个服务操作只能涉及一个单一的数据库资源,这类基于单个服务单一数据库资源访问的事务,被称为本地事务(Local Transaction)。

3、分布式事务

分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点上,且属于不同的应用,分布式事务需要保证这些操作要么全部成功,要么全部失败。本质上说,分布式事务就是为了保证不同数据库的数据一致性。

4、分布式事务应用架构

本地事务主要限制在单个会话内,不涉及多个数据库资源。但是基于SOA(Service-Oriented Architecture,面向服务架构)的分布式应用环境下,越来越多的应用要求对多个数据库资源,多个服务的访问都能纳入到同一个事务中,分布式事务应运而生。

4.1 单一服务架构

最早的分布式事务应用架构很简单,不涉及服务间的访问调用,仅仅是服务内操作涉及到对多个数据库资源的访问。

4.2 多服务分布式事务

4.3 多服务多数据源分布式事务

5、分布式相关理论

CAP原理:一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)

分区容错性:分布式系统中,一个机器坏掉不影响其他机器

可用性:一个请求,必须返回一个响应,意思是只要收到用户请求,就必须告诉用户

一致性:

  • 强一致性
  • 弱一致性
  • 最终一致性

6、BASE理论

Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)

BASE理论是对CAP中一致性和可用性权衡的结果,是基于CAP定理逐步演化而来,其核心思想是:既然无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达成最终一致性。

基本可用:允许服务降级或者允许响应时间受到一定损失

软状态:允许同步数据的时候出现一定的时间延迟

最终一致性:经过一度时间的同步数据之后,最终都能达成一个一致的状态。


摘自:分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ

posted @ 2022-09-12 10:16  +D  阅读(26)  评论(0编辑  收藏  举报