浅谈分布式事务

简介: 浅谈分布式事务

XA  Seata TA   是2pc  两阶段提交的具体实现

TCC 是 3pc  三阶段提交的具体实现

一般选用的都是 2阶段提交    锁定资源的方式

2阶段 提交和 3PC  最大的区别就是  是否对 操作的资源是否锁定, 2阶段是会锁定的,  3阶段时不锁定的, 3阶段的时效性和一致性 比二阶段 好些,  但性能就不行了。

电商项目对分布式事务 能避则避的  的态度, 应用分布式事务代价很大,  用了也只是保证最终一致性,   很难做到实时一致性。

一般电商项目都是  采用补偿机制来对数据进行同步。  通常有对账的过程。

分布式事务典型场景    

  当下互联网发展如火如荼,绝大部分公司都进行了数据库拆分和服务化(SOA)。在这种情况下,完成某一个业务功能可能需要横跨多个服务,操作多个数据库。这就涉及到到了分布式事务,用需要操作的资源位于多个资源服务器上,而应用需要保证对于多个资源服务器的数据的操作,要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。

典型的分布式事务场景:

跨库事务

   跨库事务指的是,一个应用某个功能需要操作多个库,不同的库中存储不同的业务数据。笔者见过一个相对比较复杂的业务,一个业务中同时操作了9个库。下图演示了一个服务同时操作2个库的情况: 

跨库事务

   跨库事务指的是,一个应用某个功能需要操作多个库,不同的库中存储不同的业务数据。笔者见过一个相对比较复杂的业务,一个业务中同时操作了9个库。下图演示了一个服务同时操作2个库的情况: 

   对于分库分表的情况,一般开发人员都会使用一些数据库中间件来降低sql操作的复杂性。如,对于sql:insert into user(id,name) values (1,"张三"),(2,"李四")。这条sql是操作单库的语法,单库情况下,可以保证事务的一致性。

   但是由于现在进行了分库分表,开发人员希望将1号记录插入分库1,2号记录插入分库2。所以数据库中间件要将其改写为2条sql,分别插入两个不同的分库,此时要保证两个库要不都成功,要不都失败,因此基本上所有的数据库中间件都面临着分布式事务的问题。

X/Open DTP模型与XA规范

X/Open,即现在的open group,是一个独立的组织,主要负责制定各种行业技术标准。  就分布式事务处理(Distributed Transaction Processing,简称DTP)而言,X/Open主要提供了以下参考文档:

  DTP 参考模型: <<Distributed Transaction Processing: Reference Model>>

  DTP XA规范: << Distributed Transaction Processing: The XA Specification>>

 DTP模型

   构成DTP模型的5个基本元素:

  应用程序(Application Program ,简称AP):用于定义事务边界(即定义事务的开始和结束),并且在事务边界内对资源进行操作。

  资源管理器(Resource Manager,简称RM):如数据库、文件系统等,并提供访问资源的方式。

  事务管理器(Transaction Manager ,简称TM):负责分配事务唯一标识,监控事务的执行进度,并负责事务的提交、回滚等。

  通信资源管理器(Communication Resource Manager,简称CRM):控制一个TM域(TM domain)内或者跨TM域的分布式应用之间的通信。

  通信协议(Communication Protocol,简称CP):提供CRM提供的分布式应用节点之间的底层通信服务。

目录
相关文章
|
2月前
|
消息中间件 Oracle 关系型数据库
分布式事务
分布式事务
122 0
|
9月前
|
存储 算法 网络协议
一文了解分布式事务
一文了解分布式事务
|
10月前
|
程序员
分布式事务 TCC
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,也是一种补偿式的分布式事务。它通过在业务逻辑中嵌入Try-Confirm-Cancel三个阶段的逻辑,来保证分布式事务的一致性和可靠性。TCC协议的核心思想是“补偿机制”,即在分布式事务出现异常或失败时,通过执行相反的操作来补偿之前的操作,从而达到事务的一致性。
315 0
|
消息中间件 SQL 存储
19、分布式事务
分布式事务
94 0
19、分布式事务
|
消息中间件 存储 Oracle
浅析分布式事务
分布式事务的概念讲解以及常用解决方案
133 0
浅析分布式事务
|
消息中间件 SQL 存储
分布式事务是什么?
分布式事务是什么?
111 0
分布式事务是什么?
|
消息中间件 架构师 NoSQL
一文解决分布式事务
一文解决分布式事务
245 0
一文解决分布式事务
|
消息中间件 算法 Dubbo
分布式事务的 N 种实现
分布式事务的 N 种实现
158 0
分布式事务的 N 种实现
|
存储 关系型数据库 MySQL
你知道什么是分布式事务吗
最近做项目使用到了分布式事务,下面这篇文章将给大家介绍一下对分布式事务的一些见解,并讲解分布式事务处理框架 TX-LCN 的执行原理,初学入门,错误之处望各位不吝指正。
你知道什么是分布式事务吗