MYSQL系列-分库分表(四):MYCAT实现分库分表落地实践-上

系列文档参考 MYSQL系列-整体架构介绍

前文已经实践基于Spring动态数据源和基于Sharing-JDBC的分库分表,本文主要讲述基于MYCAT的分库分表,前两篇如下:

原始需求

同前面两章介绍

MYCAT介绍

基本介绍

MyCAT(全称为MySQL Cluster Autonomic Tuning)是一款开源的分布式数据库中间件,旨在提供高性能、高可用性和可伸缩性的数据访问解决方案。它是基于MySQL协议的代理服务器,可以将多个MySQL数据库组织成一个逻辑的数据库集群,并提供了分片、负载均衡、读写分离、故障转移等功能。

官网地址如下:www.mycat.org.cn/

主要特点和功能

  1. 数据分片:MyCAT支持将数据划分为多个分片,每个分片可以部署在不同的MySQL节点上。数据分片可以水平扩展数据库的容量和性能,并提供更好的负载均衡。
  2. 负载均衡:MyCAT作为代理服务器,可以根据负载情况自动将请求分发到不同的MySQL节点上,实现负载均衡和并行处理。它支持多种负载均衡策略,如轮询、权重、一致性哈希等。
  3. 读写分离:MyCAT可以将读请求和写请求分别路由到不同的MySQL节点上,实现读写分离。这可以提高数据库的并发性能,减轻主节点的压力,并提供更好的用户体验。
  4. 故障转移和容灾:MyCAT支持节点的故障检测和自动切换,当某个MySQL节点发生故障时,它可以自动将请求转发到其它可用节点上,实现高可用性和容灾。
  5. 分布式事务:MyCAT支持分布式事务的处理,可以保证跨分片的事务的一致性和隔离性。它使用两阶段提交(2PC)协议来处理分布式事务。
  6. 数据一致性:MyCAT提供了数据同步和复制机制,可以确保分片数据的一致性。它支持同步复制和异步复制两种方式,可以根据实际需求进行配置。
  7. SQL解析和优化:MyCAT可以解析SQL语句,并对其进行优化和重写,以提高查询性能。它支持常见的SQL语法和函数,并提供了一些扩展功能,如分页查询、全局序列、分布式函数等。
  8. 监控和管理:MyCAT提供了丰富的监控和管理功能,可以实时监控数据库的运行状态、性能指标和集群拓扑。它提供了Web控制台和命令行工具,方便管理员进行配置和管理操作。

实现原理

Mycat主要原理是通过对SQL的拦截 ,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。

当Mycat收到一个SQL时,会先解析这个SQL,查找涉及到的表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集和处理所有分片返回的结果数据,并输出到客户端。

架构介绍

MyCat 在逻辑上由几个模块组成:通信协议、路由解析、结果集处理、数据库连接、监控等模块。

1、 通信协议模块:

指的是客户端与服务端之间的通信,涉及到 i/o 模型,会有客户端与服务端 i/o 的架构,还包含 MyCat 和 Mysql 交互的协议,通信协议模块承担底层的收发数据、线程回调处理工作,MyCat 通信协议默认采用Reactor模式,在协议层采用 Mysql 协议。

通讯协议模块职责是底层收发数据以及 Mysql 协议的模拟。

2、 路由解析模块:

负责对客户端传入的 sql 语句进行语法解析,解析语句的条件、类型、关键字、查询方式等,并进行优化。

3、 sql 执行模块:

比如有一条查询语句在路由解析模块查询解析并且优化完后交给 sql 执行模块,负责从连接池中获取连接,再根据路由解析的结果,把 sql 语句分发到相应的节点执行。

4、 数据库连接模块:

mycat 将 sql 语句分发到 mysql 各个节点,连接 mysql 涉及到连接维护,涉及到连接池等,就会对各个节点的结果进行一个处理,负责创建、管理、维护后端的连接池。为减少每次建立数据库连接的开销,数据库使用连接池机制对连接声明周期进行管理。

5、 结果集处理模块:

当执行完 sql 语句,它会有相关的结果集,mycat 拿到各个节点返回的结果集,对其结果集进行处理,负责对跨分片的查询结果进行汇聚、排序、截取等。

6、 监控管理模块:

负责 MyCat 的连接、MyCat 中的 i/o、内存等资源进行监控和管理。也会监控在 MyCat 中执行的 sql 语句,是插入为主还是查询为主,针对各个表的操作,针对于各个节点的操作,在监控平台中都可以看到,监控主要通过管理指令及监控服务展现一些监控数据,管理则主要通过轮询事件来检测和释放不适用的资源。

未完待续,下文讲述MYCAT配置分库分表实践操作

参考

  1. 分布式数据库中间件Mycat介绍
  2. 分库分表技术之MyCat(2)
  3. MyCat - 架构剖析 - 总体架构介绍 | 学习笔记
相关推荐
艾伦~耶格尔2 小时前
Spring Boot 三层架构开发模式入门
java·spring boot·后端·架构·三层架构
man20172 小时前
基于spring boot的篮球论坛系统
java·spring boot·后端
攸攸太上3 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
苹果醋33 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
罗曼蒂克在消亡3 小时前
graphql--快速了解graphql特点
后端·graphql
潘多编程3 小时前
Spring Boot与GraphQL:现代化API设计
spring boot·后端·graphql
大神薯条老师4 小时前
Python从入门到高手4.3节-掌握跳转控制语句
后端·爬虫·python·深度学习·机器学习·数据分析
2401_857622665 小时前
Spring Boot新闻推荐系统:性能优化策略
java·spring boot·后端
Neituijunsir5 小时前
2024.09.22 校招 实习 内推 面经
大数据·人工智能·算法·面试·自动驾驶·汽车·求职招聘
知否技术5 小时前
为什么nodejs成为后端开发者的新宠?
前端·后端·node.js