很久没更新博客啦!^-^
由于个人兴趣,最近研究了下Mycat这个中间件,通读了1.5.2版本的源码。所谓独乐乐不如众乐乐,笔者打算把其中的收获全部分享给大家。所以,近期将会有一系列关于Mycat的博客更新,涵盖Mycat的架构和源码的分析,并重点指出其中设计精要的地方,大家记得关注哦。
这是系列第一篇,介绍Mycat的整体架构。
开局一张图(此图来源于网络):
从上往下看,
MySql Protocol通信层:Application通过mysql协议连接mycat。mycat提供NIO和AIO的方式作为前端Server的实现方式,由于linux不支持AIO,所以目前推荐使用的是NIO的方式。
应用连接池:管理Application与mycat的连接
SQL解析组件+SQL优化组件+SQL路由组件:application的sql经过这三个组件依次做sql的解析、优化和路由,最终确定sql应该路由到哪些后端DB去执行,然后交给SQL执行组件
SQL执行组件:根据路由结果,对所有的target发送SQL语句,这个过程需要从后端的数据库连接池中获取链接,并且通过特定的driver和后端DB进行通信
数据库连接池:后端DB的连接池
后端MySql Protocol通信层+后端JDBC DRIVER:实现特定DB的通信协议,对于mysql来说,提供NIO和AIO的方式,同上,主要用NIO。
最后看看左边的“健康&管理”模块,
myCat开启独立的manager端口,可以通过此端口对mycat进行“会话管理”、心跳管理、内存管理、线程管理等管理操作。
ok,大家先对Mycat的架构和核心组件有个印象,下一期我们继续深入地分析~
ps:本系列讲解基于Mycat1.5.2
返回>>系列目录