此文已由作者张镐薪授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

MyCat的前世今生

如前文所说,Amoeba、Cobar、MyCat等属于同宗一脉。若Amoeba能继续下去,Cobar就不会出来;若Cobar那批人不是都走光了的话,MyCAT也不会再另起炉灶。Cobar之后,有很多类似中间件仿照其架构以及思路,针对特定的业务场景,设计出了不同的中间件。MyCat算是其中业务场景比较全面,使用配置比较简便,性能优秀,而且功能算是稳定的。同类的中间件,都是针对特定场景或者功能进行设计,像某科技的hot某中间件,性能和功能更为稳定,但是业务场景有局限,扩展分布性不是很好。
所以,我们这里对MyCat进行较为全面的剖析,以供广大程序猿同志们的参考:)

MyCat架构对比

首先,我们参考MyCat的社区文档。对比下Amoeba、Cobar、MyCat这三个中间件的架构Amoeba在前端实现了MySQL协议栈,前端链接属于NIO实现,应用将SQL请求发往Amoeba,Amoeba经过请求解析请求路由将请求通过JDBC发到后端数据库集群。返回的结果经过合并与过滤返回到前端。Cobar首先将后端JDBC换成了自己实现的原生MySQL通信层,并引入了池化的思想管理后端BIO连接池。实现自己的MySQL通信层,可以实现更多后端的功能,比如主备切换、读写分离、异步操作等。而且,实现了管理协议,可以进行动态配置MyCat通过连接池管理前后端连接,并且前后端都有NIO与AIO的实现。功能与改造开发上更为丰富与灵活

总结-为什么选择MyCat

MyCat实现了MySQL的协议栈,可以理解为,Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等,因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的,简单的说,Mycat就是MySQL最佳伴侣,它在一定程度上让MySQL拥有了能跟Oracle PK的能力:D
MyCat功能非常全面,从动态配置,集群配置,结果聚合,读写分离、到分表分库、容灾备份等。而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变。MyCat的框架思路与源代码也有很多可圈可点的地方。
虽然MyCat功能很全面,但是某些功能受限于开源产品以及人的思路不同,MyCat的全面并不是那么“全面”。比如,它对于某些MySQL语句的支持并不是那么理想,还有弱XA分布式事务。我们在应用MyCat的时候,需要根据自己的业务,来改造MyCat。
改造MyCat不是一件很困难的事,对于MyCat源代码的研究与改造也是一件很锻炼团队的事,改造成功后相信MyCat能够撑住未来很长一段时间的数据库管理需求,这真是一石二鸟的事情。MyCat社区在中国的开源社区中也算是最活跃的几个之一,这也是件很难得的事情。
接下来我们将从MyCat的使用开始,一步一步深入到MyCat的源代码原理及设计思路,最后结合具体应用场景调优MyCat。敬请期待

免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击

相关文章:
【推荐】 敏捷初体验--没有最好只有最合适

数据库路由中间件MyCat - 背景篇(2)的更多相关文章

  1. 数据库路由中间件MyCat - 使用篇(1)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 基本概念 直接介绍概念太枯燥了,还是拿个和背景篇相似的例子介绍 业务场景:客户完成下单,快递员接受并更新运单 ...

  2. 数据库路由中间件MyCat - 源代码篇(13)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 4.配置模块 4.2 schema.xml 接上一篇,接下来载入每个schema的配置(也就是每个MyCat ...

  3. 数据库路由中间件MyCat - 使用篇(3)上篇

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 全局序列号 数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯 ...

  4. 数据库路由中间件MyCat - 源代码篇(7)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 3. 连接模块 3.4 FrontendConnection前端连接 构造方法: public Fronte ...

  5. 数据库路由中间件MyCat - 源代码篇(15)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. public static void handle(String stmt, ServerConnectio ...

  6. 数据库路由中间件MyCat - 源代码篇(14)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 对于表的dataNode对应关系,有个特殊配置即类似dataNode="distributed(d ...

  7. 数据库路由中间件MyCat - 源代码篇(1)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 进入了源代码篇,我们先从整体入手,之后拿一个简单流程前端连接建立与认证作为例子,理清代码思路和设计模式.然后 ...

  8. 数据库路由中间件MyCat - 使用篇(4)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 配置MyCat 3. 配置conf/rule.xml 1.5GA版本中的规则配置比较笨,2.0中优化了一些, ...

  9. 数据库路由中间件MyCat - 使用篇(3)下篇

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2. 配置conf/server.xml server.xml几乎保存了所有mycat需要的系统配置信息.其 ...

随机推荐

  1. Python机器学习神器:sklearn&numpy

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE0MDMzOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  2. tp3.2中前台模板中日期时间的转换

    {$vo.create_time|date='Y-m-d',###} 其中###是占位符

  3. 【题解】洛谷P4281 [AHOI2008] 紧急集合(求三个点LCA)

    洛谷P4281:https://www.luogu.org/problemnew/show/P4281 思路 答案所在的点必定是三个人所在点之间路径上的一点 本蒟蒻一开始的想法是:先求出2个点之间的L ...

  4. HDFS Federation(转HDFS Federation(HDFS 联盟)介绍 CSDN)

    转载地址:http://blog.csdn.net/strongerbit/article/details/7013221 HDFS Federation(HDFS 联盟)介绍 1. 当前HDFS架构 ...

  5. hadoop-1.2.1分布式配置启动问题

    关键配置(core-site.xml 和hdfs-site.xml)(这里只是针对与HDFS,没有启动MapReduce): core-site.xml <?xml version=" ...

  6. 防sql注入攻击

    这两天看了个防sql注入,觉得有必要总结一下: 首先需要做一些php的安全配置: 1 在php.ini 中把display_errors改成OFF display_errors = OFF 或在php ...

  7. SpringBoot自动装配的原理

    1.SpringApplication.run(AppConfig.class,args);执行流程中有refreshContext(context);这句话. 2.refreshContext(co ...

  8. 误操作yum导致error: rpmdb解决方法

    错误:[root@test ~]# yum makecache error: rpmdb: BDB0113 Thread/process 18967/139716328294400 failed: B ...

  9. css 浮动说明

    clear:both; 1.要了解的:什么是浮动.浮在某面板之上. 例如:float:left; 向左停靠, 就是让需要设置浮动的元素,跟在指定元素后面. 先上实例: 比较常用导航: .nav_ul ...

  10. 7. CSS装饰网页的样式

    CSS中有哪些用来装饰网页的样式呢?在这里我们对一些常用的样式做了总结. 字体样式 /* * 一般样式书写 */ .font_style_1{ font-family: "华文行楷" ...