开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(一):MyCat-简介-MyCat 历史】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/755/detail/13237
MyCat-简介-MyCat 历史
一、MyCat 的历史
1、 Mycat 前身是阿里曾经开源的知名产品— Cobar,Cobar 的核心功能和优势是 MysqL 数据库分片,此产品曾经广为流传,据说最早的发起者对 Mysql 比较精通,后来从阿里跳槽,阿里随后开源的Cobar ,并维持到2013年年初。 Cobar 的思路和实现路径的确不错。基于 Java 开发的,实现了 MySQL 公开的二进制传输协议,巧妙地将自己伪装成一个 MySQT Server,连接的目前市面上绝大多数 MysL 客户端工具和应用都能兼容。比自己实现一个新的数据库协议要明智的多,因为生态环境在哪里摆着。应用程序连接 Cobar 与连接 Mysql 一致,数据库的驱动、连接的字物块及操作的语句都不需要改变,而 Cobar 只是一个中间件,最终进行数据的查询和插入都需要用到 Mysql 。
2、Mycat 是基于 cobar 演变而来,相对于 cobar 来说,有两个显著优势:
(1)对 cobar 的代码进行了彻底的重构,Mycat 在 I/O 方面进行了重大改进,将原来的 BIO 改成了NIO,并发量有大幅提高,同时访问性能也大大增加。
(2)增加了对 order By、Group By、Limit 等聚合功能的支持,同时兼容绝大多数数据库成为通用的数据库中间件。
// 早期的 cobar 也支持 order By、Group By、Limit 等,但没有聚合功能,Mycat 对这一功能进行了增强。总结来说,Mycat 的两个优势为:性能提高、功能增强。故 Mycat 在市面上用的比较多,是一个比较通用的数据库中间件。
3、简单的说, MyCAT 就是一个新颖的数据库中间件产品支持mysql 或者 mariadb cluster 的集群,mariadb cluster 可以看作 mysql 的一个分支,这两个数据库的驱动及具体操作基本一致,提供高可用性数据分片集群。可以像使用mysql 一样使用 mycat 。对于开发人员来说根本感觉不到 mycat 的存在。
4、应用程序原来是直接操作 mysql 数据库来进行相关的增删检查,但是 mysql 在这一部分存在互容的问题,单排的容量是有限的,假如数据量逐渐增长,由于考虑到 mysql 的互容,所以需要搭建 mysql 的提取,则数据库中间件出现可以解决这一问题。
// 应用程序直接操作数据库的中间件,由 mycat 将请求路由至节点主机所部署的 mysql ,分片 1-6 分别对应 6 个数据库,而其中存储的内容各不相同,如此就完成了横向互容,且 mysql 集群的存储能力增加,但是对于操作来说,并不关心 6 个数据库是如何操作的(数据库的插入和查询),而是学会操作 Mycat 的部分,因为数据库的插入和查询都是由 Mycat 来控制操作的。故 Mycat 的出现解决了这些问题,并且可以支持 mysql 的提取,从而简化应用程序的操作。