zoukankan      html  css  js  c++  java
  • mycat 不得不说的缘分

                                     


    1,愕然回首。它在灯火阑珊处

    关于mysql集群中间件。曾经写在应用程序里面,由开发者实现,在配置文件中面写多个数据源,写库一个数据源,读库一个数据源,笨拙不高效,由于程序猿的差异化。效果并非特别理想。

    后来。组织了开发者写了一个自己主动识别读写的功能模块接口,让开发者调用,这样能满足特定场景的业务需求。可是适应性比較窄。

    后来出了cobar,可是在高并发这里出壳了,后来在一次无意中的演讲中,见到leader在介绍了mycat,于是眼前一亮。就是它了。不早不晚。在我特别须要的时候,就进入了我的生活。

    2。人约黄昏后,月上柳梢头

    记得leader说过,看百集非诚勿扰记千句乐嘉恋爱宝典,不如妹子约起……

    万事开头难。兴趣攻其艰—>由于喜欢所以自然而然開始学习mycat。途中也认识了非常多mycat的同道门,众所周知。对于我们这些非科班出生的。并且对理论研究不是那么深入的。实践永远是最好的最有效率的学习途径。

    于是有了第一次,还蛮简单快捷方便的,从下载到安装然后试用,大概不到30分钟吧,如笔记所记录:

    mycat - 解开它神奇的面纱--:http://blog.csdn.net/mchdba/article/details/51155340                                                                                                                                                           

    之后立即做了第一个练习,mycat路由转发原理深度解析。对于此的理解是,mycat接到应用端过来的sql。它会去依据sql中 from后面的表名字,去配置schema.xml里面读取当中的全部datanode资源,然后一个个去路由去尝试请求,详情见我的blog整理:

    Mycat路由转发原理深度解析:http://blog.csdn.net/mchdba/article/details/50616527                                                                                                                                                           

    疑惑:假设做过数据库的缓存或者对mysqllimit有印象的话。应该记得有这种场景,当limit 找到记录后,就exit不会继续遍历以下未遍历的数据记录了。

    不知道mycat能否够做到这一点?貌似看debug日志是遍历了全部的datenode节点了。

    PS:做这2个我还是得心应手。由于有linux基础,有mysql基础,所以算是比較顺利,好的开头是成功的一半。更加坚信自己的信心和选择了。


    3,无奈是分离。victor大神

    接下来開始接触mycat比較show time的部分了,读写分离和主从切换,对于这2个场景。我接触的时间蛮久了,可是实现的方式方法多种多样,曾经读写分离用原始的刀耕火种,开发者在ibatis/mybatis里面写死了写库连接和读库连接。之后keepalived+lvs,再之后用了f5的vip负载均衡配置。f5性能固然比較好,可是费用费用也不少的,所以对于互联网已经中小型公司来说。这笔支出可不实惠啊。

    而mycat通过配置readHost和writeHost来实现读写分离。里面有一些配置,比方:

    balance为1:让全部的readHost及备用的writeHost參与select的负载均衡。

     
    switchType为2:基于MySQL主从同步的状态决定是否切换。

     
    heartbeat:主从切换的心跳语句必须为show slave status

    在这里遇到配置的时候,遇到一些问题。在请教了victor大神之后。他给了我他的实现思路和方法,我參考之后,顺利攻克了,把自己这部分的学习整理成了笔记,例如以下:

    mycat读写分离与主从切换:http://blog.csdn.net/mchdba/article/details/50616534                                                                                                                                                     

    PS:想要victor大神的联系方式吗,在以下留言评论区。留下你的email地址并标注victor,我发你email告诉你的。

    blog源地址:http://blog.csdn.net/mchdba/article/details/51162243谢绝转载。


    4,庖丁血牛之mycat的黑匣子

    对于mycat来说,打开debug这个帕朵拉魔盒,一切一切真相都暴露在大众面前,在这里你能够看到select的整个舞蹈轨迹。也能够看到全部的字符集的变换。千人千面万般操作尽在mycat.log。所以学会分析mycat.log日志,全部的问题都不再是问题,对于此我深有体会,例如以下的整理:

    Mycat黑匣子:http://blog.csdn.net/mchdba/article/details/51160495                                                                                                                                                                            

    5,分纷纷,生活的主旋律

    分析了mycat的黑匣子后。对于mycat背后的逻辑以及有了一定的深刻理解了,如今要进阶了,做更加难的事情了,这是分布式集群的重大特征。在业务量爆炸式增长的场景中。就须要提前考虑依据业务进行分片。在分片的学习中,也得到了victer大神和山狼的的指点,遗憾的是后来山狼由于工作忙碌。交流的越来越少了,而victor大神一直常常交流中,对于分片的尝试。整理在以下:

    Mycat高可用分片er分片的2种场景:http://blog.csdn.net/mchdba/article/details/50655304                                                                                                                                               

    Mycat连续分片-自己定义数字分片:http://blog.csdn.net/mchdba/article/details/50656337

    Mycat连续分片-按日期分片:http://blog.csdn.net/mchdba/article/details/50656478

    Mycat离散分片-枚举:http://blog.csdn.net/mchdba/article/details/50656478

    Mycat离散分片-程序指定的分区分片:http://blog.csdn.net/mchdba/article/details/50656500

    在分片的场景中。另一种业务类型,就是一个分片故障了,怎样迁移到新的分片,这个思路实现例如以下:

    Mycat分片中高速迁移思路:http://blog.csdn.net/mchdba/article/details/50939614                                                                                                                                                            

    Mycat分片中平滑迁移实施过程:http://blog.csdn.net/mchdba/article/details/50991649

    6,瑕不掩瑜。mycat的斑点

    Mycat有诸多长处,可是也有它不足的地方,比方分页、跨事务、存储过程、对db2、mongodb的支持等等,这些都须要了解熟悉。以免在使用的时候给别人挖坑,对这些方面,我们须要了解到实现的细节,然后再用案例去验证,分析问题症结所在,假设有java代码coding能力,甚至能够改动完好这些不足。对此有整理例如以下:

    Mycat分页慢解惑、跨事务解析、注解调用存储过程:http://blog.csdn.net/mchdba/article/details/50719120                                                                                                             

    7,健壮持久,多多益善

    在互联网分布式应用中,最重要的就是高可用了,高可用能保证应用的持续可用性,这样能7*24,而mycat也有相似的集群架构,这是了解mycat深入mycat必须的历程:

    Mycat集群实现:http://blog.csdn.net/mchdba/article/details/50867885                                                                                                                                                                 

    为了mycat应用部署的健壮持续,我们须要多mycat进行全方位的监控,有了这些监控数据。我们能够了解到mycat执行的信息,对于优化mycat非常实用,关于这个我有整理例如以下:

    Mycat性能採集:http://blog.csdn.net/mchdba/article/details/50727099                                                                                                                                                                   

    了解到这里,我们就知道,在部署分布式集群架构之前,肯定须要进行各种压力測试,来了解mycat的阀值以及它能达到的性能极限。能支撑多少高并发、tps、qps等等。那么这里就有一个自带的工具能够达到我们的效果:

    监控mycat压力測试的性能曲线:http://blog.csdn.net/mchdba/article/details/51050008                                                                                                                                      

    PS:事实上走到这里。行程都是蛮轻松的,不太劳苦,有点小小得意了,仅仅是常言道人无远虑必有近忧,接下来就碰到问题了。


    8。衣带渐宽终不悔,为伊消得人憔悴

    第一道坎,连接不上oracle数据源:

    在载入oracle数据源的时候,须要把oracle的jar包放到mycat安装文件夹下,通常是用这个ojdbc14.jar。放到/usr/mysql/mycat/lib文件夹以下。然后又一次载入下mycat生效。

    第二道坎,中文乱码:

    在熟悉这个里面。我遇到坎了。是最富盛名的中文乱码问题。oracle里面字符集是gbk,mysql里面是utf8,而mycat也是utf8。对于这种差异,怎样操作。我搜索了非常久,没有找到合适的方案,忙到半夜11点时候,咨询leader的时候,遇到了leader的一句神回复“设置成utg”,然后我设置在了mycat的配置文件server.xml里面:

    [root@oracle_standby ~]# vim /usr/local/mycat/conf/server.xml                                                                                                                                                                                

    <!DOCTYPE mycat:server SYSTEM "server.dtd">

    <mycat:server xmlns:mycat="http://org.opencloudb/">

            <system>

            <property name="charset">utg</property>

    ……

    结果我继续调试了,发现还是乱码。然后认为leader指点的应该没有错。可能是别的问题导致的,继续调试重组mycat各种情况调试,1个半小时过去后。还是乱码,然后引发了牛人静哥出来了。她说是字符集设置问题。并且我的设置utg是不正确的。然后我顿然醒悟,最终意识到leader的神回复utg是错误的,经验总结不能100%相信权威啊,由于万一不小心会被他带进坑里,结果我不得已回头又一次整理思路。而那时已经1:00了,窗外夜沉如水,我去冲了个凉水澡。回来继续研究。

    泠静下来后,整理思路。再奋战了1个小时后,搞定了。思路整理例如以下:

    Mycat对于数据库而言就是client,一般来讲client字符编码与数据库服务端一致就不会有什么问题,或者是严格超集,保证插入到数据库不因转码而丢失。client、系统终端、数据库三者字符庥得协调,否则不一致的话,会有字符集转换的问题,有时候。显示正确的,但不一定在数据库就保存正确,或者保存到数据库的数据编码正确,没准显示为乱码。

    这就意味着,在oracle里面是gbk或者latin1啥都没有关系,仅仅要做好以下3点:

    (1)。在迁移到mysql里面。在mycat平台上从oracle导出时候字符集设置为utf8

    (2),在mycat平台上导入到mysql字符集也要设置为utf8

    (3), 然后在mycat平台上查看数据也要设置字符集为utf8

    做好了以上3点,三而合一,这样就能正常显示中文了。

    Mycat平台上实现oracle迁移到mysql:http://blog.csdn.net/mchdba/article/details/50995059                                                                                                                                        

    第二天闹钟换我起床,睡眼朦胧,镜中熊猫眼。^_^

    9。奇女子静哥

    看到她的名字“静哥”,我不由得自主想起了一首流传甚久的歌曲“我不是黄蓉我不懂武功我仅仅要静哥哥完美的爱情……”,这首歌曲是不是非常平民化非常雨非常有喜感啊,反正我认为蛮接地气的哈,歌曲地址是:http://bd.kuwo.cn/yinyue/90334?

    from=baidu。由于作为金庸迷,对这个太敏感了,所以对她印象非常深刻,并且她mycat技术非常好口才也好,活脱脱一个现代版小黄蓉啊,并且据leader发的照片来看,确实是标准的江南美女。并且难得的是她刚工作不久还是单身。

    SO说道在这里,大家都懂了吧。有想认识她学习mycat技术或者准备拓展mycat业务的,在文后评论区留下你的email地址并标注静哥。我会给你发email的告诉联系方式的。

    10。瑞士军刀、亲亲山庄、中国开源第一门派

    到此位置,mycat的重要功能点基本完毕了,然后就是师傅临进门修行在个人了,哦对了,还有Mycat最后一个重要点,mycat-eye,这个是蛮实用的,not only formyat,当然眼下还是一个半成品。梦想是成为mysql伴侣,仅仅要用了mysql,就离不开mycat-eye,当然梦想是美好。现实是须要我们大家一起去实践去完好它,虽然如此。mycat-eye还是有它独特的闪光点:

    Mycat瑞士军刀:http://blog.csdn.net/mchdba/article/details/51059547                                                                                                                                                                               

    最后,介绍下,mycat的带路人。leader-us。看名字。就知道他是mycat的发起人,架构实力非常深厚,口才也非常好,眼下给我感觉是技术领域中营销实力最强的、映像领域中技术实力最强的。

    他能看到mycat的市场并且開始运作成立mycat高端服务公司,是非常有魄力的。

    所以他有成为相似马云那样的企业家的潜质的,他的梦想是成立亲亲山庄,做高端技术服务和支持,成立咨询公司,并且做到中国的apache,成为国内开源界的No1,当然了个人实力有限,所以须要大家一起努力。眼下开启众筹活动,起步是一人5W。大概估计征集70几个人。启动资金有300W到400W左右,他就能够全职參与并运营亲亲山庄了。

    亲亲山庄的选址是广州到珠海之间的海岛上,风景宜人,适合居住生活。

    11。尾声。左兄与任正非、leader-us与马云

    新成立的公司里面。有个左兄,非常传奇,大一在大学入伍,然后复员专业。来上海学IT。年纪轻轻,睡在地铁站,苦心专研数据库、系统、中间件,如今已经成为了业界大牛,上海地区mycat标杆人物,和他接触过,胆大心细脸皮厚,并且对朋友和身边人仗义。深深懂得利益均沾的道理并且也言行一致。认为他有任年轻时候的影子。未来成就无限。

    然后就是leader-us。他有马云的口才。还有王坚的技术功底,能够说能说服非常多人,并且这次众筹选择的对象也非常准确,选择的是在北上广深一线城市税后1.5W的从业人员和南京武汉重庆福州二线城市税后1W的从业人群。对市场目标定位准确,所以leader-us成功的概率非常大,这也是我和左兄还有非常多朋友决定增加这个创业团队的主要原因吧。

    眼下众筹已经结束,资金已经到位,已经開始开展mycat高端技术支持服务。大家有须要的,能够在以下评论区留下email地址,我会第一时间联系回复你的,谢谢。

  • 相关阅读:
    Conference deadlines
    waiting list
    BDA3 Chapter 1 Probability and inference
    PP: Articial Intelligence—TheRevolution Hasn’t HappenedYet
    兼容ie9文件上传,及现代浏览器实现进度条
    input 打开文件夹事件委托
    前端构建工具gulpjs的使用介绍及技巧
    如何编写兼容各主流邮箱的HTML邮件
    前端通用框架可行性研究报告之弹窗
    切换tab键,不聚焦a标签
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7363383.html
Copyright © 2011-2022 走看看