Mycat的初步认识
Posted IT分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mycat的初步认识相关的知识,希望对你有一定的参考价值。
前面写到了分库,分表,我们知道了按范围,hash,按时间取来进行分库,或者分表,那么这里如何做到呢?
首先了解下:
一、Mycat的介绍
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代mysql的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群:Mycat最推荐使用的就是mysql,也支持很多其他的数据库,可以伪装成各种数据库的协议去与数据库进行交互,去拉取数据,从Mysql5.7以后也是支持集群的
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
二、Mycat的关键特性
支持SQL92标准
支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster(mysql的前身)
基于Nio实现,有效管理线程,解决高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略(一类的业务的表),实现了高效的多表join查询。
支持分布式事务(弱xa,本地消息表)。
支持XA分布式事务(两段提交协议)。
支持全局序列号,解决分布式下的主键生成问题。
支持zookeeper协调主从切换(master-slave主从的切换)、zk序列、配置zk中心化
支持库内分表(水平分表)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
三、MyCat的架构图
上面是应用,下面是mysql的通信层,它是基于NIO和AIO的,在往下面走是应用的连接池。
mycat是基于连接池来实现的。下面还有SQL的解析组件,SQL优化组件,SQL的路由组件。
支持OrderBy 排序,Group By 聚合,结果集的合并。由SQL执行组件去执行上面的一系列的聚合函数,然后通过数据库连接池伪装成不同的数据库协议然后来连接到不同的数据库。
还有对一些操作的管理和监控。合并结果集是由内部来做的,因为里面融合了内部缓存技术。
以上是关于Mycat的初步认识的主要内容,如果未能解决你的问题,请参考以下文章