文章目录

Mysql 的 proxy 中间件有比较多的工具,例如,mysql-proxy, atlas , cobar, mycat, tddl, tinnydbrouter等等。相比较而言,Mycat并不是最快的,但是功能比较丰富,对读写分离和分库分表都有支持,而且比较易用,对原有的应用系统侵入比较小,系统改造比较易于实现。

如果说Mycat有一些不足的话,那就是,在整个系统中,Mycat会成为一个单点。因为所有的sql都会通过Mycat来路由,在数据库比较多的情况下,Mycat本身的cpu性能压力就会随之增大。因此,在生产系统中,Mycat不可避免的会需要一些多活的高可用手段。同样,由于Mycat本身需要解析sql,也需要合并各个数据库返回的结果,本身的CPU消耗就会比较高,在数据库较多的情况下,CPU可能不堪重负。

因此,在数据库比较多的情况下,生产环境的部署可能是这样的,

按之前的讨论,Mycat 会成为系统的单点,性能压力比较大。如果,Mycat 可以开发一个嵌入式 Mycat 系统,将 Mycat 代码嵌入在每个客户端中,这样,原先在 Mycat 上的集中压力就分散到了每个客户端上。当然,这样的架构需要对 Mycat 做一些改造,比如需要引入配置中心概念,将原来的分库分表配置集中管理,这样,每个客户端上的配置就一致了。同时,如果配置发生变化,还需要同步给每个客户端。引入嵌入式 Mycat(Mycat Embeded)之后的系统架构可能如下(图中略去了配置中心部分),

当然,目前而言,Mycat 的优势还是非常明显的,相比与嵌入式 Mycat,现有的架构对原有系统的侵入非常小,现有架构模拟了 Mysql 数据库的接口,应用系统完全不用引入新的依赖,只需要改写部分 sql 即可。

文章目录

欢迎来到Valleylord的博客!

本博的文章尽量原创。