最初接触 Mycat 是由于练数上面新开的课程《Mycat从入门到精通》,并且授课老师是 Leader-us,这个是关键,在这以前报过Learder-us的分布式课程,在分布式课程开始以前,就听到群里的同窗讨论说Leader-us的做业很是虐,因此当时已经有些恐惧感,当第一课开始后,看到第一课做业就晕头转向,发现好多东西都没听过,因此当时直接就放弃了这门课程的做业,固然后面的视频也就成压箱底的东西了。如今想起来还很后悔没有跟上节奏把分布式的课程好好学下来,以致于后面看到分布式课程的同窗聊那些高大尚的话题我都不敢插话。因此第二次报名Leader-us的课程Mycat的时候,在课程开始以前我就作好了心理准备,无论课程有多虐,我都要坚持到最后。mysql
在学Mycat课程以前,我对Mycat是一无所知的,当时只知道Mycat能够用来将数据库作成相似分布式的这种概念,当时有听过NewSQL的概念,就以为Mycat好像就是相似的这么一个东东。并且在学Mycat课程以前我连Mysql的主从都没有用过,更不要说后面课程里面的一些牛逼哄哄的高可用LVS / Haproxy + keepalived ,以及数据库压测,Linux主机性能监控这种高级货了,可见这一路学下来是多么的艰辛,也学到了很多东西。记得在作Mycat前面几课的做业的时候常常是周末成天在那捣鼓Mycat,这也是Leader-us做业比较虐的地方,你必须先作做业了解清楚,而后下周的课程才开始讲这个知识点,因此当时为了作做业,基本上权威指南是少不了的,并且必须翻群里的各类聊天记录,问各类小白的问题,可是课程一路到如今,每节课程的做业都是实打实的操做下来,对Mycat的基本的一些功能还算是了解了,这也是比较欣慰的地方。整个课程学习下来积累的10多课的做业文档,还有认识群里的大牛都将为之后Mycat的实际应用铺平道路。sql
整个课程的学习各类心酸与快乐只有实际参与了才能知道,我的文字功底很差,就不详述了,此处省去800余字。数据库
接下来仍是扒一扒Mycat的好与很差,此处纯属我的看法。后端
关于Mycat作的比较好的几点包括jvm
一、 Mycat对Mysql主从的支持,听说这也是目前使用Mycat的群体使用最多的功能之一分布式
二、 Mycat路由的功能,在后端数据库作了分片或者主从的状况下,Mycat对自动路由功能,能够省去业务程序多数据源切换的问题性能
三、 Mycat对于数据库链接池的统一管理,由于一个数据库的schema可能会被好几个业务系统同时使用,随着业务系统的增长,mysql的链接很快就会不够,而若是使用Mycat作一层代理的话,全部业务系统都只要连到Mycat上,而这些业务系统是能够共享后台Mysql的链接的学习
四、 Mycat的分片功能,这也是Mycat的杀手级的功能,可是这个功能又是个双面剑,用的好你会感受很爽,系统性能有大幅提高,用的很差你会很痛苦,并且有时候可能会很迷茫,特别是你的分片规则没有选好的状况下,后期系统不断扩容,各类数据迁移的问题,可能会让你很无语spa
Mycat还有待改进的地方代理
一、 对于大表分页查询的问题,尤为是当分页比较大的状况下,Mycat须要从每一个分片取出m+n条记录,而后到内存中来排序,获得最终结果,这个是个很耗内存的操做,若是同一时间多有几个这样的查询,极可能就致使Mycat jvm内存溢出了。
二、 在采用了Mycat进行分片的状况下,跨分片join问题,虽然Mycat有E-R分片和全局表的概念能够在比较大多数的状况下解决跨分片join问题,可是系统的复杂性老是会出乎你的意料,可能在某些状况下这个功能又会让你望而却步。