1、mycat 简介
Mycat 是一个开源的分布式数据库系统,是由阿里开源Cobar演化而来,解决之前cobar存在的问题。比如:假死(cobar的前端使用NIO,后端采用阻塞模式并未实现NIO,一旦数据库当前线程池占用后,即便再简单的SQL,或者试图建立新链接,数据库都会无法响应。)、数据一致性?(一旦cobar假死之后,如果实现了cobar高可用,并配置了心跳检测。心跳检测失败后cobar会进行主从切换 ,这就导致cobar,认为数据库宕机了,切换其他节点进行数据库操作,但实际上只是因为数据库阻塞。这就可能多个节点数据库都在进行写操作,从而严重影响数据库的数据的一致性。)等等一系列的问题。 mycat实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库。
简单的说,MyCAT就是:
1、一个彻底开源的,面向企业应用开发的“大数据库集群”
2、支持事务、ACID、可以替代Mysql的加强版数据库
3、一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
4、结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
5、一个新颖的数据库中间件产品
2、原理
Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。