分布式事务框架 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

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MYSQL事务死锁问题排查及解决方案

《MYSQL事务死锁问题排查及解决方案》:本文主要介绍Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录问题现象推测 1 - 客户端无错误重试配置推测 2 - 客户端超时时间过短推测 3 - mysql 版本问

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF