分布式事务

什么是事务?

事务(Transaction),一般是指要做的或所做的事情,由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。简单理解就是一手交钱,一手交货,你要收到钱,我要收到货,要么钱货两清,要么结束交易。

什么是本地事务?

通常我们使用关系型数据库来控制事务(是数据库本身具备的能力)。
在单体架构中,数据库和应用程序是在一起的(同一服务器),
所以基于关系型数据库的事务,又被称之为本地事务

事务的特征?(ACID)

Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样

onsistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作

Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)

Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

spring怎么接管本地事务?

  1. 配置文件

  2. 注解

1.配置文件

<bean id="Transaction" class="org.springframework.jdbc.datasource.DatasourceTransactionManagement">
    <property name="datasource" ref="datasource"/>
</bean>

2.注解

@EnableTransactionManagement

spring接管的事务流程与普通流程的区别?

没有被spring接管的事务流程:获得connection对象,通过这个对象操作数据,事务操作

被spring接管的事务核心是返回的是spring的connection对象

CAP在数据库优化读写分离在中的体现?

CAP原则指的是在一个分布式系统中:

  • 一致性:任何时候都需要给用户返回最新的数据

  • 可用性:任何时候都要给用户反应,即使是数据是旧的

  • 容错性:一个节点挂了不影响其他节点

容错性必须要满足,三者只能满足两者

读写分离从字面意思来理解就是数据库的写操作与查询操作个分一台服务器(一般读操作给主服务器,查询给从服务器),然后进行数据的同步。

体现:
一致性:从数据库必须要等待主数据完成数据同步,才能给客户响应(过程阻塞)

可用性:我现在可以先返回旧的数据给用户(从服务器没有获取主服务器的最新数据)

容错性:从服务器挂了不影响主服务器

什么是BASE理论?

BASE理论是由Basically Available(基本可用)Soft state(软状态)Eventually consistent(最终一致性)三个单词的简写。BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式使系统达到最终一致性。

简单来说:

  • 最终一致性:稍后可以完成

  • 强一致性:马上就要完成

什么是分布式事务?

分布式把应用进行拆分,服务跟服务之间,需要通过网络通讯。通常一个模块可以对应多个数据库(多个库),数据库跟数据库之间需要远程协助才能操作的事务,称之为分布式事务。

用本地事务解决分布式无法解决远程的问题,所以要使用分布式事务

分布式事务本质上就是用一个事务组管理所有的本地事务:

  1.拿到事务的控制权返回自己的DataSource

  2.管理事务

  1. 保存本地事务结果
  2. 统计分析结果
  3. 通知本地事务执行结果
posted @   时光里的少年  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示