分布式事务框架 JTA,TCC,seata

2024-04-09 17:18

本文主要是介绍分布式事务框架 JTA,TCC,seata,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JTA  AND TCC

 

需要一个框架协调者: 当两个同时成功了才执行commit 否则执行rollback

二阶段 : 第一阶段预提交sql  第二部执行commit或者rollback

XA: 两阶段提交

JTA: java规范的两阶段提交  (中间件)atomikos (jta规范)

 

atomikos 将jdbc的连接封装了一层 用atomikos 操作sql的事物

 

CAP  BASE 概念

 

 

其中分区容错 是必须满足的  (两个分布式之间网络的通讯有可能断开数据不能同步,分区容错性解决了两个分布式系统就算网络断开也可以独立通讯) 至少保证访问单个的也可以访问

 

一致性和可用性只能满足其一

一致性(当两个服务之间不能通信,往web1中插入数据化web2中查不到的,返回提示没有这个数据或者数据未同步)

可用性(当两个服务之间不能通信,往web1中插入数据化web2中查不到的,返回null 查不到)

zookeeper cp 一致性

 

base   把cap 调优 折中处理  在特定的业务下满足一点一致性并且也满足一些可用性

 

 

 

 

和jta的区别  事物的锁密度小  并发变强

总结 : jta的方式对于事物是一个一个排队执行的  ,事物锁的强度大, 耗性能和时间 ,对于单个项目可以考虑

tcc : 虽然他的性能更高,锁的强度小,但是代码侵入性很大, 你需要自己写代码去回滚 .

 MQ:   还有使用消息队列的方式去提交回滚事物

 

SEATA

每一个对应自己的db

 

 TC:事务协调者  全局的  用于记录和统计事物 

 TM: 事务管理者  事务的发起 管理分支  用于创建全局事物 真正做事的

  RM:资源管理器   一个代理的连接  返回一个数据库连接

Seata解析-TM、RM、TC交互流程梳理  https://blog.csdn.net/weixin_38308374/article/details/108329792

@Transactional  spring的事务注解 :  1.建立连接 2.开启事务 3.执行方法 4.提交或者回滚

 

将每个系统的事物注册到事物管理者里面  第一个注册进去的事物会有一个groupid  会保存起来 , 同一个方法中使用不同的事物  事物的grouypid是相同的,为了让他进行同时回滚操作

事物协调者发现异常后通知各个分支事物回滚

groupid  的传递 是通过拦截器   

这篇关于分布式事务框架 JTA,TCC,seata的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888756

相关文章

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现