随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大,这时最容易出现的问题就是服务器繁忙,我们可以通过增加服务器及改造系统来缓解压力,然后采用负载均衡、动静分离、缓存系统来提高系统的吞吐量。然而,当数据量的增长达到一-定程度的时候,增加应用服务器并不能明显地提高系统的效率,因为所有压力都会传导到数据库层面,而大多数系统都是用一个数据库来存储和管理系统数据的。这时,Mycat应运而生。
谈到Mycat就不得不谈谈Cobar, Cobar 是阿里巴巴开源的数据库中间件,由于其存在使用限制及- -些比较严重的问题,Leader-us在其基础上于2013年年底实现了Mycat 1.0 版本, Mycat-经发布便引起了很多人的关注。之后Myeat社区对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章:简要介绍了用于Myeat性能监控的工具一.Mycat-web, 详细讲解了Mycat 和MySQL的优化技术,是DBA的亲身总结和经验之谈。
第6章:重点阐述了Mycat的架构,包括网络、线程、连接池、内存管理及缓存实现等,是了解Mycat框架的基础。
第7章:介绍了Mycat的核心技术,包括分布式事务的实现、跨库Join的三种实现方式等,介绍了多节点数据汇聚和排序的原理,并详细阐述了在Mycat 1.6版本中实现的一致性分布式事务的功能。
第8章:介绍了MySQL和PostgreSQL的通信协议及Mycat对这些通信协议的实现,然后介绍了Mycat对JDBC及多种数据库的支持,例如Oracle、SQL Server、MongoDB 等。
从内容上讲,本书从一个使用者的角度去理解、分析和解决问题,通过大量的实例操作和源码解析,帮助读者深入理解Myeat的各种概念。读者对其中的案例只要稍做修改,再结合实际的业务需求,就可以在正在开发的项目中应用,达到事半功倍的效果。并且,通过学习书中应用实战方面的内容,不仅可以直接提高开发技能,还可以解决在实践过程中经常遇到的各种关键问题。另外,本书中的所有观点和经验均是作者们在多年建设、维护大型应用系统的过程中积累形成的,非常值得借鉴和推广。
下面给大家展示一下本书的部分内容:
为什么 需要分布式数据库
随着计算机和信息技术的迅猛发展和普及,行业应用系统的规模迅速扩大,行业应用所产生的数据量呈爆炸式增长,动辄达到数百TB甚至数百PB的规模,已远远超出现有的传统计算技术和信息系统的处理能力,而集中式数据库面对大规模数据处理逐渐表现出其局限性。因此,人们希望寻找一种能快速 处理数据和及时响应用户的访问的方法,也希望对数据进行集中分析、管理和维护。这已成为现实世界的迫切需求。
1.安装和配置MySQL数据库
首先需要下载MySQL安装包,推荐使用MySQL 5.6,下 载地址为
htp://ew.MySQL.com/downloads/il/?id- 461390。
双击安装包进行安装,安装过程比较简单,这里只介绍安装细节。使用navicat连接本地安装好的数据库,如图2-1 所示。
zk-create.yaml 配置文件
在介绍配置之前,先介绍几个概念。Mycat Zone指的是分布于不同地域(Zone) 的MycatCluster, Zone 的命名建议用地理位置来标识,比如北京联通机房1. Cluster 是Mycat集群,一个Cluster包含一个或多个Myeat Server。 - 般来讲,一个Zone都有- -组主备Mycat负载均衡器LB,LB与同一中心内的Mycat Cluster组成一对多关系, 即一个LB可以服务-一个中心内的所有Cluster的负载均衡请求,也可以是多个LB,每个负担不同的Mycat Cluster的流量。此外,建议每个LB都有一个Backup, Backup 平时并不连接Mycat Cluster,但监测到LB Master下线以后,就立即开始连接Mycat Cluster并开始工作。它们的关系大概可以用- -组箭头来表示: Zone→Mycat Cluster- Mycat Server-→MySQL,如图3-2所示。
4.1.1 MySQL 读写分离
对于MySQL,主流的读写分离是master-slave和galera cluster,下面分别介绍如何通过Mycat来实现这两种模式的读写分离。
MySQL主从读写分离的准备环境见表4-1.
5.1.2 Mycat-web 的配置和使用
1.连接ZooKeeper
初次使用Myeat-web时需要配置ZooKeeper的地址,有以下两种方法。
(1)访问
htp://o/clhost:8082/mycat/,在注册中心填写ZooKeeper的IP地址和端口即可,
第一次访问时才需要进行配置。
(2)修改mycat.properties文件,填写格式为zookeeper-IP:2181
需要获取这份资料的小伙伴可以直接前往下方自取!