首页 > 其他分享 >分布式事务

分布式事务

时间:2022-11-22 21:57:13浏览次数:40  
标签:事务 数据库 XA 本地 消息中间件 分布式

首先理解事务,提供一种“要么什么都不做,要么做全套(All or Nothing)”的机制,她有ACID四大特性(原子性,一致性,隔离性,持久性)

 

1 分布式事务

分布式事务顾名思义就是要在分布式系统中实现事务,它其实是由多个本地事务组合而成。

对于分布式事务而言几乎满足不了 ACID,其实对于单机事务而言大部分情况下也没有满足 ACID,不然怎么会有四种隔离级别呢?所以更别说分布在不同数据库或者不同应用上的分布式事务了。

流程图:

 

 

2 常见的分布式事务解决方案

2.1 基于XA协议的两阶段提交

XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。 

 

总的来说,XA协议比较简单,而且一旦商业数据库实现了XA协议,使用分布式事务的成本也比较低。但是,XA也有致命的缺点,那就是性能不理想,特别是在交易下单链路,往往并发量很高,XA无法满足高并发场景。XA目前在商业数据库支持的比较理想,在mysql数据库中支持的不太理想,mysql的XA实现,没有记录prepare阶段日志,主备切换回导致主库与备库数据不一致。许多nosql也没有支持XA,这让XA的应用场景变得非常狭隘。

 

2.2 消息事务+最终一致性

所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性,具体原理如下:

 

1、A系统向消息中间件发送一条预备消息
2、消息中间件保存预备消息并返回成功
3、A执行本地事务
4、A发送提交消息给消息中间件

 

 

资源:

https://www.cnblogs.com/Daniel-Leung/p/fenbushishiwu20210825230930.html

 

标签:事务,数据库,XA,本地,消息中间件,分布式
From: https://www.cnblogs.com/ningshare/p/16916591.html

相关文章

  • 分布式锁
    1什么是分布式锁?分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体......
  • Spring事务的底层原理
    1.划分处理单元——IOC由于spring解决的问题是对单个数据库进行局部事务处理的,具体的实现首相用spring中的IOC划分了事务处理单元。并且将对事务的各种配置放到了ioc容......
  • 分布式系统的特性
    互联网上有许多的应用程序和服务,它们都有可能出现故障,但在很多时候,我们几乎都不能发现这些服务中断的情况,这就是分布式系统的关键特性。分布式系统的特性包括容错性、高可扩......
  • Spring事务
    1什么是事务?事务(Transaction)是数据库区别于文件系统的重要特性之一。目前国际认可的数据库设计原则是ACID特性,用以保证数据库事务的正确执行。Mysql的innodb引擎中的事务......
  • 分布式系统的特性
    互联网上有许多的应用程序和服务,它们都有可能出现故障,但在很多时候,我们几乎都不能发现这些服务中断的情况,这就是分布式系统的关键特性。分布式系统的特性包括容错性、高可......
  • 分布式面试题
    ZooKeeper和Redis两种分布式锁区别Redis:优点:redis基于​​内存​​​,读写性能很高,因此基于redis的分布式锁效率比较高缺点:在redismaster实例宕机的时候,可能导致多个客户端......
  • redisson分布式锁原理剖析
    redisson分布式锁原理剖析​ 相信使用过redis的,或者正在做分布式开发的童鞋都知道redisson组件,它的功能很多,但我们使用最频繁的应该还是它的分布式锁功能,少量的代码,却实......
  • Crony 一个基于Go语言实现的分布式定时任务管理平台
    crony-分布式定时任务管理平台1.基本介绍1.1项目背景项目中存在许多定时任务,很多代码写法都是采取见缝插针式的写法或者直接丢到task服务里面写,存在以下问......
  • Seata 1.5.2 源码学习(事务执行)
    关于全局事务的执行,虽然之前的文章中也有所涉及,但不够细致,今天再深入的看一下事务的整个执行过程是怎样的。1.TransactionManagerio.seata.core.model.TransactionManag......
  • MySQL进阶实战2,那些年学过的事务
    一、MySQL服务器逻辑架构MySQL核心部分包括查询解析、分析、优化、缓存以及内置函数,所有跨存储引擎的功能,存储过程、触发器、视图等。存储引擎负责MySQL中数据的存储和提取......