鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

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聚合+结果集合并

    负责对跨分片的查询结果进行汇聚、排序、截取等。