MyCat - 架构剖析 - 核心技术之分布式事务的支持 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习 MyCat - 架构剖析 - 核心技术之分布式事务的支持

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat - 架构剖析 - 核心技术之分布式事务的支持】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/757/detail/13301


MyCat - 架构剖析 - 核心技术之分布式事务的支持

内容介绍

一、 MyCat 分布式事务实现

二、 Mycat SQL 路由实现

三、 Mycat 跨库 JOIN

四、 Mycat 数据汇聚与排序

 

一、 MyCat 分布式事务实现

在这一章节主要讲解在 Mycat 当中如何支持分布式事务,不讲解分布式事务的解决方案,如两阶段提交、分阶段提交事务补偿以及基于 MQ 来实现事务的最终一致性。

Mycat 在 1.6 版本以后已经支持 XA 分布事务类型,具体使用流程如下:

1.在应用层需要设置事物不能自动提交(开启事务的手动提交)

set autommit=0

2.在 SQL 中设置 XA 为开始状态(开启一个基于 XA 的分布式事务类型)

set xa=on

3.执行 SQL

(1)insert into user(id,name,sex)values(1,‘Tom’,‘1’),(2,‘rose’,‘2’),(3,‘leo’,‘1’)(4,‘lee’,‘1’)

4.对事务进行提交或回滚

(1)commit/rollback

image.png

这幅流程图描述了应用程序操作 Mycat,Mycat 最终操作底层的 MySQL 的流程。

在应用程序中要执行一个比较复杂的操作,涉及到事务的话,首先要设置提交方式为手动提交;其次设置image.png标识为二;标识已经开启了命令为XA的事务管理器,XA事务管理器需要通知底层的 MySQL 要进行的一些事务的操作,然后再进行一个预操作。

预操作指的是要插入对应的数据,插入数据是要到各个节点中去插入数据,如果有任何一个节点在执行 insert 语句返回的结果是失败,那么整个事物都要进行回滚(rollback),在分布式事务当中,这个事物叫群居事物;每一个 MySQL 事务是分支事务,在分支事务当中有任何一个事务在执行中失败了,那么整个群居事务都需要回滚(rollback),即其他的节点也需要回滚(rollback),以保证事物的一致性。

假如在执行 insert 语句时,三个 MySQL 都执行成功了,那么整个事务都可以进行提交(commit)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
弹性计算 运维 Kubernetes
探索后端开发的未来:微服务架构与容器化技术
在数字化时代的浪潮中,后端开发正经历着前所未有的变革。微服务架构的兴起和容器化技术的普及,不仅重新定义了软件的开发、部署和管理方式,还为后端开发带来了新的挑战和机遇。本文将深入探讨微服务架构和容器化技术如何影响后端开发的未来,通过数据支撑和逻辑推理,揭示这些技术趋势背后的科学原理和实际应用价值。
|
20小时前
|
运维 Kubernetes Docker
容器化技术在微服务架构中的应用
【7月更文挑战第3天】容器化技术在微服务架构中的应用,为现代应用的开发、部署和运维带来了革命性的变化。通过容器化,我们可以实现服务的快速部署、独立运行和高效扩展,同时提高资源的利用率和系统的可维护性。随着容器技术的不断发展和完善,相信它将在未来的软件开发中发挥更加重要的作用。
|
2天前
|
弹性计算 运维 负载均衡
构建高可用性的分布式系统:技术与策略
【7月更文挑战第1天】构建高可用分布式系统涉及负载均衡、容错处理和数据一致性等关键技术,遵循冗余、模块化及异步设计原则,并通过监控告警、自动化运维和弹性伸缩策略确保稳定性。
|
6天前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
12 1
|
6天前
|
NoSQL 算法 Java
技术好文:Redis实现分布式锁的7种方案
技术好文:Redis实现分布式锁的7种方案
|
9天前
|
Java 数据库连接 API
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有良好的封装性、可移植性,以及数据库无关性。
“论数据访问层设计技术及其应用”写作框架,系统架构设计师
|
12天前
|
存储 供应链 安全
区块链技术防止交易被篡改的能力主要依赖于其独特的架构和机制
**区块链技术通过分布式存储、去中心化网络、哈希链接、共识机制及加密算法确保交易防篡改。每个区块含前块哈希,篡改将破坏链式结构;共识机制如PoW、PoS保证交易验证;智能合约增强安全性。多层防护保障数据完整性和安全性,支撑其在多个行业中的应用。**
|
1天前
|
SQL 中间件 关系型数据库
MyCAT数据库中间件的架构与使用方法
MyCAT数据库中间件的架构与使用方法
|
1天前
|
消息中间件 Java 开发者
Java中实现事件驱动架构的异步通信技术
Java中实现事件驱动架构的异步通信技术
|
2天前
|
消息中间件 存储 缓存
使用Java构建高可用的分布式系统的关键技术
使用Java构建高可用的分布式系统的关键技术