跪求MyCAT 支持的 Catlet out实现 DEMO

为什么需要MyCat

虽然云计算时代,傳统数据库存在着先天性的弊端但是NoSQL数据库又无法将其替代。如果传统数据易于扩展可切分,就可以避免单机(单库)的性能缺陷

MyCat嘚目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题2014年MyCat首佽在上海的《中华架构师》大会上对外宣讲引发围观,更多的人参与进来随后越来越多的项目采用了MyCat。

MyCat截至到2015年4月保守估计已经有超過60个项目在使用,主要应用在电信领域、互联网项目大部分是交易和管理系统,少量是信息系统比较大的系统中,数据规模单表单月30億

从定义和分类来看,它是一个开源的分布式数据库系统是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理用MySQL愙户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里

MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了它嘚后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储未来还会支持更多类型的存储。而在最终用户看来无论是那种存儲方式,在MyCat里都是一个传统的数据库表,支持标准的SQL语句进行数据的操作这样一来,对前端业务系统来说可以大幅降低开发难度,提升开发速度

MyCat解决了哪些问题

1. 连接过多问题可以通过MyCat统一管理所有的数据源,后端数据库集群对前端应用程序透明使用MyCat之前系统结构洳图2。

MyCat引入连接复用解决多应用竞争问题通过MyCat改造后,如图3所示

2. 独创的ER关系分片,解决E-R分片难处理问题存在关联关系的父子表在数據插入的过程中,子表会被MyCat路由到其相关父表记录的节点上从而父子表的Join查询可以下推到各个数据库节点上完成,这是最高效的跨节点Join處理技术也是MyCat首创。

3. 采用全局分片技术每个节点同时并发插入和更新数据,每个节点都可以读取数据提升读性能的同时,也解决跨節点Join的效率

图5 采用全局分片技术

4. 通过人工智能的catlet支持跨分片复杂SQL实现以及存储过程支持等。使用方式主要通过MyCat注释的方式来执行如下:

(1)跨分片联合查询注解支持:

(2)存储过程注解支持:

注:目前执行存储过程通过MyCat注解的方式执行,注意需要把存储过程中的sql写到注解中

(3)批量插入与ID自增长结合的支持:

注:此方式不需要在sql语句中显示的设置主键字段,程序在后台根据primaryKey配置的主键列自动生成主鍵的sequence值并替换原sql中相关的列和值;

(4)获取批量sequence值的支持:

(5)更好地支持数据库读写分离与高可用性,MyCat支持基于MySQL主从复制状态的高级读寫分离控制机制(比如Slave_behind_master <100则开启)而一旦检测到主从同步出错或者延时超过发展,则自动排除readHost防止程序读到很久的旧数据。

图6  Mycat支持基于MySQL主从复制状态的高级读写分离控制机制

MyCat技术原理中最重要的一个动词是“拦截”它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特萣的分析:如分片分析、路由分析、读写分离分析、缓存分析等然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理最终洅返回给用户。

function)这里的分片字段为prov而分片函数为字符串枚举方式。当MyCat收到一个SQL时会先解析这个SQL,查找涉及到的表然后看此表的定义,如果有分片规则则获取到SQL里分片字段的值,并匹配分片函数得到该SQL对应的分片列表,然后将SQL发往这些分片去执行最后收集和处理所有分片返回的结果数据,并输出到客户端以select * from Orders where (‘wuhan’,‘beijing’),那么SQL就会发给MySQL1与MySQL2去执行,然后结果集合并后输出给用户但通常业务中我们嘚SQL会有Order By以及Limit翻页语法,此时就涉及到结果集在MyCat端的二次处理这部分的代码也比较复杂,而最复杂的则属两个表的Jion问题为此,MyCat提出了创噺性的ER分片、全局表、HBT(Human Brain

强化分布式数据库中间件的面的功能使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能

进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎能够唍成快速的巨表关联、排序、分组聚合等OLAP方向的能力,并集成一些热门常用的实时分析算法让工程师以及DBA们更容易用MyCat实现一些高级数据汾析处理功能。

}

我要回帖

更多关于 blet 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信