---
title: Mycat架构
description: "图1 Mycat架构图"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0003.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmycat_03_0003.html
indexId: ad2d992cfe5415769a407cd0ccbf178d9261cee0e3cfcc888d1ea3fb655ad7bb69
---
# Mycat架构

图1 Mycat架构图

Mycat在逻辑上由几个模块组成：

- MySQL Protocol通信层
  Application通过MySQL协议连接Mycat。Mycat提供NIO和AIO的方式作为前端Server的实现方式，因为Linux不支持AIO，因此目前推荐使用的是NIO的方式。

- 应用连接池
  管理Application与Mycat的连接，Mycat则采用了基于MySQL实例的连接池模式，每个Database都可以用现有的1000个连接中的空闲连接。

- SQL解析组件+SQL优化组件+SQL路由组件
  Application的SQL通过这三个组件依次作SQL的解析、优化和路由，最终确定SQL应该路由到哪些后端DB去执行，而后交给SQL执行组件。

- SQL执行组件
  根据路由结果，对全部的target发送SQL语句，这个过程需要从后端的数据库连接池中获取连接，而且经过特定的driver和后端DB进行通信。

- 数据库连接池
  负责创建、管理、维护后端的连接池。为减少每次建立数据库连接的开销，数据库使用连接池机制对连接生命周期进行管理。

- 后端MySQL Protocol通信层+后端JDBC Driver
  实现特定DB的通信协议，对于MySQL来讲，提供NIO和AIO的方式，因为Linux不支持AIO，因此目前推荐使用的是NIO的方式，主要用NIO。

- ORDER BY排序+GROUP BY聚合+结果集合并
  负责对跨分片的查询结果进行汇聚、排序、截取等。
