开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat - 架构剖析 - 总体架构介绍 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/757/detail/13293
MyCat - 架构剖析 - 总体架构介绍
内容介绍:
一、源码下载及导入
二、总体架构
三、总体执行流程
一、源码下载及导入
下载 mycat 的源码导入到i件中,因为在这章节讲解时会涉及到
mycat 源码。
1、访问百度,找到 mycat 官方网站
2、点击下载
3、进入 github,里面有 mycat 的源码
4、下载源码,得到地址,通过 github 克隆到本地
二、总体架构
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 语句,是插入为主还是查询为主,针对各个表的操作,针对于各个节点的操作,在监控平台中都可以看到,监控主要通过管理指令及监控服务展现一些监控数据,管理则主要通过轮询事件来检测和释放不适用的资源。
三、总体执行流程
application
应用程序连接上 mycat 服务,用到网络通信,因为客户端和服务端交互,在后面会提到网络通信有两种,一种是 nio,一种是 aio,传统的 bio 在新版的 mycat 中采用的,通过 i/o 可以接收到从客户端过来的请求,进行 mysql 协议的解析模拟,执行相关的 sql 语句,交给 sql 解析组件进行解析,交给优化组件进行优化,sql 语句最终交给 sql 执行组件,sql 执行组件是根据 sql 解析路由优化的结果执行 sql 语句,sql 要分发给各个节点进行执行,各个节点 mysql 执行完 sql 语句后,执行的结果要在结果集进行汇总,排序等相关操作,最终将结果返回给客户端运行程序,在 mycat 会涉及到事务心跳,缓存,资源管理等监控相关操作。
接下来会会针对每一个模块所涉及到的核心的东西进行分析、剖析。





