| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 分布式事务及其解决方案 -> 正文阅读 |
|
[大数据]分布式事务及其解决方案 |
一、本地事务 简单来说,一个单体应用中,一般只会涉及一台数据库服务器,而数据库服务器本身就具有事务特性,这种在一台数据库服务器上实现的事务叫本地事务。 二、分布式事务 同理,在分布式系统中,每个应用都拥有自己的数据库服务器,此时想要实现多台应用之间的数据一致性,显然靠本地事务是无法实现的,因此需要实现分布式事务,也就是保证多个系统的操作原子性,要么全部成功要么全部失败的方式叫分布式事务。例如: 1)跨数据源的分布式事务 2)跨服务的分布式事务 三、分布式解决方案 分布式需要解决的问题就是不同系统之间的数据一致性问题,所以需要各个子系统之间互相等待,同时提交,同时回滚,达成强一致性。但是事务在等待过程中处于弱可用状态。各个子系统之间互相通讯,协调事务状态,因此需要一个事务协调者: 四、事务模式 1.基于两段性提交的XA模式 XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准(协议),几乎所有主流的关系型数据库都对 XA 规范 提供了支持。 一阶段:事务协调者通知每个事务参与者执行事务,事务参与者反馈执行结果,不提交事务 二阶段:如果收到事务均执行完成,则通知每个事务参与者提交事务 基于这个思想,2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案Seata。 XA模式优势:1)事务的强一致性,满足ACID原则 2)常用数据库都支持,实现相对简单,没有代码侵入。 XA模式劣势:1)一阶段需要锁定数据库资源,等待二阶段才能释放,性能较差 2)依赖关系型数据库。 2.TCC模式 通过人工编码实现诗句恢复,需要实现三个接口 1)Try:资源的检测和预留 2)Confirm:完成资源操作业务;要求 Try 成功 Confirm 一定要能成功 3)Cancel:预留资源释放,可以理解为try的反向操作 优势:数据一致性较好,灵活性较好, 劣势:开发成本高,有代码侵入,每个事务操作每个参与者都需要实现try/confirm/cancel三个接口。 3.基于消息队列的分布式事务 订单系统完成订单入库后,通知MQ向库存系统发送可减少库存消息,库存系统收到消息后减少库存执行本地事务,假如订单系统失败,不会触发消息发送,库存系统状态不变。 消息队列模式优势:由MQ协调完成,性能高,开发成本低 消息队列模式劣势:依赖数据库本地事务实现,MQ会出现频繁读取数据库记录,占用数据库资源。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:50:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |