推荐序1
随着大数据时代的到来,海量数据存储、并行计算、异构数据互联等一系列新技术在市场上不断地涌现。相信数据库行业的很多从业者都对传统关系型数据库的单点故障及容量问题头疼不已,而“分库分表”也早已成为解决这类问题的基础,此时,Mycat应运而生。 Mycat是一款面向企业级应用的开源数据库中间件产品,它目前支持数据库集群、分布式事务与ACID,被普遍视为基于MySQL技术的集群分布式数据库解决方案,在一些互联网、金融、运营商客户中用来替代昂贵的Oracle。
Mycat不仅可以轻松对接MySQL、SQL Server等传统关系型数据库,也融合了内存缓存、NoSQL、HDFS等新兴大数据技术,是一款非常优秀的数据库中间件。
在如今的大数据时代,分布式架构已经成为企业级数据应用的标配,传统的关系型数据库产品已经面临一个真正的拐点:一方面,关系型数据库自身难以实现分布式,这大大限制了其数据存储能力及整体的性能表现;另一方面,商业化的传统数据库产品的成本和性价比在分布式架构崛起的状况下毫无优势可言。因此,无论是从底层全新实现分布式计算存储的NoSQL、Hadoop,还是使用Mycat这样的分库分表工具,对关系型数据库大刀阔斧地进行“改装”都是大势所趋。
作为一名专注于数据库领域多年的从业者,我认为Mycat从中间件工具的角度成功地弥补了MySQL的诸多局限。
• 分布式存储:通过Mycat,MySQL可以实现集群化与分布式管理,使数据库容量与处理能力大大改善。
• 性能加速:通过分布式集群及Mycat Booster对MySQL数据库在集群环境下的加速,Mycat大大提升了MySQL集群的性能。
• 异构数据互联互通:除了MySQL,Mycat同时支持如SequoiaDB、MongoDB这样的NoSQL数据库及HDFS分布式文件系统,实现了对非结构化数据、半结构化数据及结构化数据的存储及互联。
• 多样化的数据库工具:Mycat为用户提供了丰富的管理工具,可以帮助用户更好地管理数据库系统。
本书非常适合作为Mycat的入门及进阶参考读物,它非常全面地阐述了分库分表的基本原理、实现机制及实践经验。本书的作者有着丰富的行业经验及技术底蕴,能够把业界非常前沿的知识用深入浅出的语言传授给各位读者。
最后,作为SequoiaDB的联合创始人,我十分钦佩Mycat团队的技术及勇气。虽然基础软件的开发难度很大,但是我们都敢于去挑战一个个技术难点,并填补国内基础软件产品的巨大空白。因此,我在这里衷心地祝愿Mycat前程似锦!
——巨杉数据库联合创始人 王涛
推荐序2
随着分布式系统的发展,应用的分布式由于无状态的特性,可以利用消息机制相对简单地进行拆分,计算的分布式也可以通过Map、Reduce等相关算法来解决。但是随着业务压力和并发压力的增加,我们急需一种分布式数据库解决方案来支持数据库的水平扩展,通过简单地增加服务器及线性地提升数据库的并发访问能力,为闯过分布式系统的最后一道难关铺平道路。
从阿里巴巴的Cobar到开源社区的Mycat,从Cobar的架构师贺贤懋、朱海清、邱硕到Mycat的核心人员南哥、冰风影,作为一名专注于MySQL数据库十多年的从业者,我见证了分布式数据库的从无到有到百花齐放,在收到本书的序言邀请时,我感到非常荣幸。
现在的分布式数据库产品越来越多。YouTube公司提供的Vitness功能强大,在YouTube的生产环境下支撑了大量的业务访问;360公司的Altas基于MySQL Proxy开发而成,最初主要在应用层进行透明的读写分离,于2013年引入了分库分表;陈菲在离开360公司后在WPS云平台用Go语言编写了Kingshard;楼方鑫(黄忠)在离开支付宝后编写了OneProxy;腾讯互娱的DBA团队基于Spider打造了自己的分布式数据库平台;淘宝在内部将TDDL的客户端工具作为了分库分表中间件;阿里巴巴的B2B开源了支撑其内部业务生产环境3年的Cobar,为开源社区提供了一大助力;而基于Cobar开发的Mycat及其各种分支由于其易用性,将分布式数据库进一步推广到互联网和传统行业的各个业务领域。
Mycat无疑是这些中间件中的佼佼者,支持百亿级别的数据分片和并行计算,支持高可用和MySQL的读写分离,并随着版本的更新进一步支持Oracle、DB2、MongoDB等后端数据库,随着周边产品的进一步成熟,在越来越多的分布式或者非分布式(仅用它的读写分离或者高可用)生产环境中得到部署,受到越来越多的企业的关注。本书恰逢其会,由Mycat核心开发人员撰写而成,详细讲述了Mycat的由来、架构特点、核心模块、实际使用案例和企业实践,是一本不可多得的好书。
——沃趣科技MySQL负责人 李春
推荐序3
作为国产开源数据库中间件—Mycat的发起者,我不得不为本书作序。
这是一本由众多技术精英合著的数据库+中间件领域的专业书籍,这些人包括Mycat Commiter、Mycat志愿者及资深DBA,大家在工作之余抽出大量时间来编写和完善此书,历经一年完成了本书的编写工作,实属不易。
数据库中间件是新兴的重要的互联网中间件,目前业界仍然缺乏一本系统性介绍相关领域的软件产品、常用技术、架构等的纸质书籍。本书围绕Mycat开源中间件,从基础入门到架构原理,从运行机制到源码实现,从系统运维到应用实践,讲解得详尽而又完善。本书内容丰富、图文并茂、由浅入深,对数据库中间件的基本原理阐述清晰,对程序源码分析透彻,对实践经验讲解深刻。
从内容上讲,本书从一个使用者的角度去理解、分析和解决问题,通过大量的实例操作和源码解析,帮助读者深入理解Mycat的各种概念。读者对其中的案例只要稍做修改,再结合实际的业务需求,就可以在正在开发的项目中应用,达到事半功倍的效果。并且,通过学习书中应用实战方面的内容,不仅可以直接提高开发技能,还可以解决在实践过程中经常遇到的各种关键问题。另外,本书中的所有观点和经验均是作者们在多年建设、维护大型应用系统的过程中积累形成的,非常值得借鉴和推广。
希望Mycat在大家的支持下走得更远,成为中国软件的骄傲。
——Leader-us
前言
随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大,这时最容易出现的问题就是服务器繁忙,我们可以通过增加服务器及改造系统来缓解压力,然后采用负载均衡、动静分离、缓存系统来提高系统的吞吐量。然而,当数据量的增长达到一定程度的时候,增加应用服务器并不能明显地提高系统的效率,因为所有压力都会传导到数据库层面,而大多数系统都是用一个数据库来存储和管理系统数据的。这时,Mycat应运而生。
谈到Mycat就不得不谈谈Cobar,Cobar是阿里巴巴开源的数据库中间件,由于其存在使用限制及一些比较严重的问题,Leader-us在其基础上于2013年年底实现了Mycat 1.0版本,Mycat一经发布便引起了很多人的关注。之后Mycat社区对Cobar的代码进行了彻底重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合、Join等基本特性,同时兼容了绝大多数数据库,使之成为通用的数据库中间件。Mycat在1.4版本以后完全脱离了Cobar内核,同时采用了Mycat集群管理、自动扩容及智能优化,成为了高性能的数据库中间件。Mycat从诞生至今已有三年多了,一直在坚持做最好的开源数据库中间件产品。
本书总计8章,涵盖了Mycat入门、进阶、高级技术实战、企业运维、架构剖析、核心技术分析、多数据库支持原理与实现等内容,内容详尽、图文并茂,几乎囊括了Mycat所涉及的方方面面,无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深IT人士来说,本书都极具参考价值。
第1章:介绍了分布式系统和分布式数据库系统的原理,介绍Mycat的起源和发展状况,并对各种数据库中间件做了简要介绍和对比。
第2章:讲解了Mycat的入门知识,介绍了Mycat的安装环境、核心概念和分库分表的原理,以及Mycat源码开发调试的过程。
第3章:讲解了Mycat的进阶知识,主要介绍Mycat的各种配置和分片算法。
第4章:讲解了Mycat和MySQL实战案例,由拥有丰富的Mycat线上实战经验的专家和DBA共同编写而成,有很高的参考价值。
第5章:简要介绍了用于Mycat性能监控的工具—Mycat-web,详细讲解了Mycat和MySQL的优化技术,是DBA的亲身总结和经验之谈。
第6章:重点阐述了Mycat的架构,包括网络、线程、连接池、内存管理及缓存实现等,是了解Mycat框架的基础。
第7章:介绍了Mycat的核心技术,包括分布式事务的实现、跨库Join的三种实现方式等,介绍了多节点数据汇聚和排序的原理,并详细阐述了在Mycat 1.6版本中实现的一致性分布式事务的功能。
第8章:介绍了MySQL和PostgreSQL的通信协议及Mycat对这些通信协议的实现,然后介绍了Mycat对JDBC及多种数据库的支持,例如Oracle、SQL Server、MongoDB等。
本书的编写和校对历经一年,参与编写的作者都是Mycat开源项目中参与度比较高、提交过不少代码或有丰富的实战经验的资深人士。非常感谢参与本书编写、指导或校对的专家:Leader-us、南哥(曹宗南)、从零开始(宋伟)、小张哥(张超)、yuanfang(杨鹏飞)、顽石神(张治春)、冰麒麟(杨峰)、望舒(胡雅辉)、明明Ben(朱阿明)、零(章爱国)、little-pan(潘自朋)、CrazyPig(陈建欣)、毛茸茸的逻辑(王成瑞)、海王星(林志强)、石头狮子(林晁)、HanSenJ(姬文刚)、武(王灯武)、战狼(刘胡波)、KK(刘军)、董海雄(易班网)、arx(李秋伟)、正能量(王金剑)、吉光(李伟)。
由于作者的写作水平有限,书中难免会有不妥或者疏漏之处,欢迎读者批评指正。
——冰风影
Mycat社区负责人
2016年11月6日于广州番禺