1.Mycat原理解析-Mycat架构分析
一、常见的数据库中间件对比
功能 | Sharding-JDBC | TDDL | Amoeba | Cobar | MyCat |
---|---|---|---|---|---|
基于客户端还是服务端 | 客户端 | 客户端 | 服务端 | 服务端 | 服务端 |
分库分表 | 有 | 有 | 有 | 有 | 有 |
MySQL交互协议 | JDBC Driver | JDBC Driver | 前端用NIO,后端用JDBC Driver | 前端用NIO,后端用BIO | 前后端均用NIO |
支持的数据库 | 任意 | 任意 | 任意 | MySQL | 任意 |
MyCat是社区爱好者在阿里Cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中,目前MyCAT社区活跃度很高。
二、架构图
1、Sharding-JDBC
2、TDDL
3、Amoeba
4、Cobar
5、MyCat
总结:
- TDDL 不同于其它几款产品,并非独立的中间件,只能算作中间层,是以 Jar 包方式提供给应用调用。属于JDBC Shard 的思想,网上也有很多其它类似产品。
- Amoeba 是作为一个真正的独立中间件提供服务,即应用去连接 Amoeba 操作 MySQL 集群,就像操作
单个 MySQL 一样。从架构中可以看来,Amoeba 算中间件中的早期产品,后端还在使用 JDBC Driver。 - Cobar 是在 Amoeba 基础上进化的版本,一个显著变化是把后端 JDBC Driver 改为原生的 MySQL 通信协议层。后端去掉 JDBC Driver 后,意味着不再支持 JDBC 规范,不能支持 Oracle、PostgreSQL 等数据。但使
用原生通信协议代替 JDBC Driver,后端的功能增加了很多想象力,比如主备切换、读写分离、异步操作等。 - MyCat 又是在 Cobar 基础上发展的版本,两个显著点是:
(1)后端由 BIO 改为 NIO,并发量有大幅提高
(2)增加了对Order By、Group By、limit 等聚合功能的支持(虽然 Cobar 也可以支持 Order By、Group By、Limit 语法,但是结果没有进行聚合,只是简单返回给前端,聚合功能还是需要业务系统自己完成)。