传统分布式事务
1、ACID特性A(原子性)事务的原子操作单元,对数据的修改,要么全部执行,要么全部不执行;C(一致性)在事务开始和完成时,数据必须保持一致状态,相关的数据规则必须应用于事务的修改,以保证数据的完整性,事务结束时,所有的内部数据结构必须正确;I(隔离性)保证事务不受外部并发操作的独立环境执行;D(持久性)事务完成之后,对于数据的修改是永久的,即使系统出现故障也能够保持;
2、 XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。
3、JTA介绍 作为java平台上事务规范JTA(Java Transaction API)也定义了对XA事务的支持,实际上,JTA是基于XA架构上建模的,在JTA 中,事务管理器抽象为javax.transaction.TransactionManager接口,并通过底层事务服务(即JTS)实现。像很多其他的java规范一样,JTA仅仅定义了接口,具体的实现则是由供应商(如J2EE厂商)负责提供,目前JTA的实现主要由以下几种:1.J2EE容器所提供的JTA实现(JBoss) 2.独立的JTA实现:如JOTM,Atomikos.这些实现可以应用在那些不使用J2EE应用服务器的环境里用以提供分布事事务保证。如Tomcat,Jetty以及普通的java应用。
4、两阶段提交协议2PC 严格的ACID;两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做。效率非常低(微服务架构下已不太适用);并发量大时的性能损耗严重,只有支持XA协议的资源才能参与分布式事务。