人总是在鄙视中成长,学无止境,在分布式环境经常会遇到操作多个数据库的情况,这个具体取决于业务的分库设计,如果一个对外的接口同时要操作两个库的话,那么怎么保证一致性就是很大的问题,传统的基于JTA的全局事务管理,他们的事务管理基于XA协议,他们之间的事务感知基于数据库等支持XA协议的可管理器资源,这个方法当然是被鄙视的,呵呵,对于互联网来说JTA容器来说太重了,同时在性能上也不能满足,那么应该有一种更轻量级的方式去解决这个问题
对于多个数据库操作,唯一要关心的是他们之间可以相互感知,也就是说第一个方法必须知道后续的事务方法的情况,根据后续事务的情况来考虑操作,比如可以写成
public class A {
public void serviceA(){
.....//A的业务方法
B.serviceB();
C.serviceC();
}
}
这样做法的跨事务的方法加入到相同的帧栈上,然后通过异常来控制事务的提交或者回滚,只有一个帧栈的方法才能做到事务之间的感知,然后通过AOP去控制事务管理
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
//一个Map保存所有的连接
Map dsMap = ThreadLocalHolder.getDsMap();
//通过服务名字获取数据库连接
Connection conn = dsMap.getConnection(proxy.getServiceName());
conn.setAutoCommit(false);
conn.begin();
//权限判断
try {
//方法通过A的属性类型得到数据库连接
Object result = method.invoke(targetObject, args);
} catch(Exception ex) {
conn.rollback();
throw ex;
}
conn.commit();
return result;
}
把所有的事务代码通过在一个帧栈中感知事务,需要在应用端控制事务,而JTA把事务控制交给了JTA的事务管理器,而XA协议感知之间的成功,如果事务代码是平行的,那么应用端就搞不定.比如代码如下
public void facadeA(Request request) {
A.serviceA();
....../////省略
B.serviceB();
C.serviceC();
}
这种不在一个帧栈的代码结构,只能通过JTA的方式去做了,希望这次鄙视可以让自己成长,无所谓失败还是成功,只想说,唉噢,不错噢!!Let us go ,tomorrow is another day..
相关推荐
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在...
### 深入理解分布式事务 #### 一、分布式事务定义及重要性 分布式事务是指在分布式系统中,为了确保跨多个节点上的操作能够正确地完成或者全部回滚,所采取的一种事务处理机制。在这样的场景下,事务的参与者、...
在IT行业中,分布式事务管理是复杂系统设计中的一个重要环节,特别是在微服务架构中,确保数据的一致性至关重要。本文将详细讲解"springboot-jpa atomikos 分布式事务管理"这一主题,以及如何在SpringBoot 2.0.5版本...
Seata是由阿里巴巴开源的一个分布式事务解决方案,旨在提供高性能和简单的分布式事务服务。它支持多种事务模式,目前最流行的模式是AT模式,其次是TCC模式和Saga模式。 - **RuoYiAT模式**:这是一种基于JDBC的自动...
SpringBoot作为一款轻量级的框架,提供了便捷的多数据源配置和分布式事务管理方案,使得开发者能够高效地管理和操作不同的数据库。本文将详细探讨SpringBoot如何实现多数据源以及分布式事务。 首先,我们要理解什么...
在现代企业级应用中,随着业务复杂性和规模的增加,多数据源分布式事务管理成为了一个不可或缺的话题。本调研报告深入探讨了如何在Java环境中有效地处理此类事务,旨在为开发人员和架构师提供实用的指导。 分布式...
LCN(Local Capable Notifier)是一个专门为Java平台设计的轻量级分布式事务解决方案,它致力于解决在微服务架构中常见的分布式事务问题。本资源包提供了关于LCN框架的全面介绍,包括PPT讲解、教学视频以及实际项目...
通过上述步骤,Spring Cloud应用能够轻松地实现分布式事务管理,提升了系统的可扩展性和稳定性。不过,值得注意的是,尽管TX-LCN简化了分布式事务的实现,但在实际应用中仍需考虑性能、网络延迟、故障恢复等问题,并...
除了通过标准的XA接口实现分布式事务外,MySQL还提供了内部的XA支持,这意味着开发者可以直接在MySQL服务器内部使用XA功能,而无需依赖外部的事务管理器。 #### 九、总结 本文详细介绍了MySQL如何通过XA协议实现...
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于...
分布式事务应用的成功构建,不仅需要中间件平台的支持,还需要应用开发者对分布式计算和事务管理有深刻的理解,以及对应用模式的恰当选择。在实际开发过程中,可能还需要考虑性能优化、故障恢复、安全性保障等因素,...
TCC模式是一种典型的分布式事务管理模式,通过Try、Confirm和Cancel三个阶段来实现事务的一致性。 - **Try阶段**:尝试执行操作,预留必要的资源。 - **Confirm阶段**:确认操作,释放之前预留的资源。 - **Cancel...
分布式事务是现代大规模分布式系统中不可或缺的一个重要概念,它的出现源于单体应用向微服务架构的演进。在单体应用中,事务处理相对简单,通常由数据库自身的ACID特性来保证。然而,随着业务复杂性的增加,系统往往...
本教程将深入探讨如何在Spring Boot环境下实现多数据源操作及分布式事务管理,并加入对多线程的支持。 首先,我们来理解多数据源的概念。在大型系统中,往往需要连接多个数据库,如主库、从库、测试库等。Spring ...
其中,X/OpenDTP事务模型是一个重要的标准,它定义了分布式事务处理的参考模型,包括应用程序(AP)、资源管理器(RM)和事务管理器(TM)三个角色。AP定义事务边界,RM处理具体资源,如数据库,而TM作为协调者,...
### .NET中的事务与分布式事务处理 #### 一、引言 事务处理是现代软件开发中不可或缺的一部分,尤其是在处理数据库操作或需要确保一系列操作原子性的场景下。.NET框架提供了强大的事务支持,允许开发者轻松地在不同...
分布式事务管理是微服务架构中的一个关键领域,不同的解决方案各有优势和局限性。选择合适的分布式事务解决方案需要根据具体的业务需求和技术背景综合考虑。随着技术的发展,未来可能会出现更加高效且灵活的分布式...
这个框架的目标是提供简单易用、高效率的分布式事务处理能力,兼容Spring Cloud 2.x版本,确保在复杂分布式环境下的业务逻辑正确执行。 LCN框架的核心特性包括: 1. **简单易用**:LCN设计简洁,提供了基于注解的...