当前位置:网站首页>中电金信技术实践|分布式事务简说
中电金信技术实践|分布式事务简说
2022-08-04 11:22:00 【51CTO】
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本篇文章主要是对分布式事务进行简说,与各位同仁进行探讨切磋。
传统事务
在传统单体应用架构下,我们通常会将业务数据存储在一个数据库中,应用各模块直接对数据库进行操作业务数据。由数据库提供基ACID的事务保证。
A是Atomic原子性的简称(事务作为整体来执行,要么全部执行,要么都不执行。)
C是Consistency一致性的简称(事务应确保数据从一个一致的状态转变为另一个一致的状态。)
I是Isolation隔离性的简称(多个事务并发执行时,一个事务的执行不应影响其他事务的执行。)
D是Durability持久性的简称(已提交的事务修改数据会被持久保持。)
业务拆分微服务化事务
随着微服务架构和云计算的流行,很多大型的业务流程被拆分成了多个功能单一的基础服务,大家会根据业务的诉求在这些基础服务之上编写一些组合调用服务以满足业务诉求。
为了保证微服务能够独立开发部署运行,通常我们会采用一个微服务一个数据库的架构,将内部数据经微服务封装之后,以服务方式对外暴露。
这样以往基于数据库来实现的数据操作就变成了多个对外提供服务的微服务系统的协同完成操作。因为单个微服务只知道自己的服务执行情况,为了保证分布事务的一致性,参与分布式事务的微服务通常会依托协调器完成相关的一致性协调操作。


编辑
分库分表跨库事务
随着微服务的兴起,单库的连接数和并发已经达到了瓶颈,为了解决单库性能瓶颈的问题,我们引入了数据库的垂直分库和水平分表,而分库分表后,原来在一个数据库上就能完成的写操作,可能就会跨多个数据库,这时原有的单机事务往往会变成分布式事务,出现了跨库事务问题。


分布式事务诉求
■ 跨数据库分布式事务
系统分库、分表后,跨库事务几乎无法避免,分布式事务可以让应用轻松具备跨库事务处理能力。
■ 跨服务的分布式事务
分布式事务与分布式微服务平台结合,提供跨库、跨服务的事务支持,实现业务链路级别的分布式事务。
■ 消息队列分布式事务
在多次调用消息系统的场景中,通过分布式事务应用可轻松具备消息事务的处理能力。
■ 混合的分布式事务
分布式事务可将各个资源加入事务范畴,实现同时跨服务、数据库、跨消息系统的事务处理能力。
■ 多种事务模式
提供了标准事务模式、自定义事务模式和重试模式,以供选择并应用于不同的业务场景。
分布式事务架构


编辑
分布式事务模式(SAGA事务模式)


编辑
Saga是一种补偿协议,在Saga模式下,分布式事务内有多个参与者,每一个参与者都是一个冲正补偿服务,需要用户根据业务场景实现其正向操作和逆向回滚操作。
分布式事务执行过程中,依次执行各参与者的正向操作,如果所有正向操作均执行成功,那么分布式事务提交。如果任何一个正向操作执行失败,那么分布式事务会退回去执行前面各参与者的逆向回滚操作,回滚已提交的参与者,使分布式事务回到初始状态。Saga正向服务与补偿服务也需要业务开发者实现。
分布式事务模式(TCC事务模式)


编辑
TCC(Try-Confirm-Cancel)实际上是服务化的两阶段提交协议,业务开发者需要实现这三个服务接口,第一阶段服务由业务代码编排来调用Try接口进行资源预留,所有参与者的Try接口都成功了,事务管理器会提交事务,并调用每个参与者的Confirm接口真正提交业务操作,否则调用每个参与者的Cancel接口回滚事务。
边栏推荐
- 深度强化学习与APS的一些感想
- 【LeetCode】1403.非递增顺序的最小子序列
- 怎么禁止textarea拉伸
- C language * Xiaobai's adventure
- *W3C* 标准组织
- The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
- ESP8266-Arduino编程实例-MQ3酒精传感器驱动
- 小程序实战(一)- 骨架屏的应用与实现
- Use pytest hook function to realize automatic test result push enterprise WeChat
- 化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)
猜你喜欢

Xilinx VIVADO 中 DDR3(Naive)的使用(3)仿真测试

C#/VB.NET:在 Word 中设置文本对齐方式

今天15:00 | CVPR 2022 论文分享精彩继续

C language * Xiaobai's adventure

Graphic and text hands-on tutorial--ESP32 MQTT docking EMQX local server (VSCODE+ESP-IDF)

Leetcode Brush Questions - Path Sum

Leetcode brush questions - 543. Diameter of binary trees, 617. Merging binary trees (recursive solution)

123

Leetcode刷题——二叉搜索树相关题目(98. 验证二叉搜索树、235. 二叉搜索树的最近公共祖先、1038. 从二叉搜索树到更大和树、538. 把二叉搜索树转换为累加树)

【目标检测】yolov2特征提取网络------Darknet19结构解析及tensorflow和pytorch实现
随机推荐
ORB-SLAM3中的优化
The use of DDR3 (Naive) in Xilinx VIVADO (2) Read and write design
Using .NET to simply implement a high-performance clone of Redis (2)
『快速入门electron』之实现窗口拖拽
【LeetCode】98.验证二叉搜索树
Win11 file types, how to change?Win11 modify the file suffix
The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
Heap Sort
123
win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
蒲丰投针学习笔记
【黄啊码】MySQL入门—1、SQL 的执行流程
浅析深度学习在图像处理中的应用趋势及常见技巧
ECCV 2022 | 清华&腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法
BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报
光盘刻录步骤
*W3C* Standards Organization
Small program containers accelerate the construction of an integrated online government service platform
Disc burning steps
超美星空特效,你Get了吗?