徐员外#《分布式数据库架构及企业实践》100本技术书之7

像分布式系统这样的概念还需要在此解释的话,那么你可能不适合阅读学习此本书,这本书跟我介绍的100本技术之3的内容大体相当,作者在分布式数据库全局的角度上围绕mycat进行了总结,所以接触过或掌握了mycat技术的工程师应该关注mycat之外作者提到的一些内容,另外通过阅读本书,也相当于将我之前总结的内容从不同的角度重新复习了一遍,这也符合学习的规律:“温故而知新”。此书分为八章的内容来讲,具体内容如下:

第一章分布式系统及数据库的原理

核心功能图

数据库中间件对比

第二章Mycat安装配置,核心概念,分库分表原理,源码开发调试过程

逻辑库(schema)

我的理解,用户访问的不再是原有物理上的数据库,通过访问mycat的逻辑库来获取数据,逻辑库起到的作用是管理原有数据库在内的不同的物理数据节点。

逻辑表(table)

我的理解,逻辑表存在于mycat逻辑库,并且能与物理库中的表形成一一对应的映射关系。

访问核心原理图

当用户通过SQL语句访问数据时,Mycat通过自身定义的系列拦截机制,查看分片、读写、缓存、路由等信息后将sql语句指到不同的数据库节点,最后将结果返回。

第三章进阶,各种配置和分片算法

核心配置文件schema.xml

回顾第二章的内容,理解上述配置文件中逻辑表逻辑库的概念。

节点配置信息

在上述图中我们可以配置访问mycat数据库节点的最大最小连接数,负载均衡权重,主从数据库服务器,读写分离相关的参数。

另外规则相关信息配置在rule.xml文件中,此文件默认已经带了很多配置的例子,可以根据需要进行删减。另外在集群中数据库自增主键无法保证唯一性的时候,全局唯一性通过Sequence配置文件sequence_conf.properties进行配置。同时需要在mycat逻辑库中创建mycat_sequence表,用于维护sequence信息。

配置Mycat集群

当我们的Mycat逻辑库分布在不同区域的节点的时候,我们可以通过zookeeper对mycat进行集群,mycat提供了zk-create.yaml配置文件。

具体配置参数可以在zk-create.yaml文件中,对照书中的1~7项配置进行配置。最后分表分片的规则可以根据实际的业务规则需要进行选择,在书中对于分片规则有详细的介绍,大约有14种分片规则算法,比如要知道在分布式扩容的过程中采用“一致性hash”算法,这里不再细述。

第四章实战案例

第一种mysql读写分离方案,mycat

首先通过一个案例介绍了mycat对双主mysql-master和一个mysql-slave服务器进行读写分离的配置,扩展到实际项目中的双主热备+多个从服务器DB的解决方案。

第二种mysql读写分离方案, Mysql GaleraCluster

主要特点,多主服务器拓扑结构,没有单点故障,随时扩容等。在schema.xml中配置,书中有详细的实例,能够很清晰的增加删除主从节点进行测试。

此外还介绍了另外一套主流数据库SQLServer的读写分离配置。接着介绍mycat的高可用机制,通过配置mycat主从及检测心跳机制,自动切换故障服务器的方法。

含金量比较高的一些技术是下面这些,每一部分都可以写成一本书来讲,此书中关于下面这些技术的实例需要有耐心仔细看几遍,全部代码敲完,错误排查完,估计需要个把月的时间,达到灵活运用还需要不断钻研,这也说明了真正掌握核心技术的人连1%都不到,如果以后有人跟你说分布式数据库很简单,只有两种可能,要么这个人什么都不会,要么就是绝世高手,第一种的可能性更高。

Percona集群分布式事务

HAProxy负载均衡,媲美F5硬件服务器

Keepalived高可用方案,避免单点故障

MHA+Keepalived

Zookeeper搭建高可用集群

整体集群图

第五章Mycat监控工具mycat-web

这部分介绍了监控工具mycat-web的安装及使用,偏向于图形化运维,相对来讲这部分的内容也比较简单,不是重点。倒是后面总结了mysql的调优,倒是在系统的应用过程中非常实用的一些小技能,估计作者在工作中遇到过性能提升的瓶颈,当时调优的过程中也查找了很多的资料,现在一起归纳一下。这也说明一个高可用高性能的大系统,调优不是单一某个层面的问题,需要整体协同,逐步演进。

第六章架构,网络、线程、连接池、内存管理

上面这张图是mycat的整体架构图,可以看出它是通过左边不同的模块组件来实现操作数据库的功能的,同时我们需要了解以下三者核心概念及实现机制的不同,mycat用了两种,在tcp和Http层。

[BIO阻塞、NIO分发、AIO回调轮询]

Mycat线程架构

后面介绍了内存管理、缓存等实现,这部分要结合mycat的java源代码进行分析。

第七章核心技术,分布式事务一致性,跨库join的三种方式,多节点数据汇聚和排序的原理

这一章的内容还是详细的介绍了路由、分片原理流程相关的知识,主要是讲实现原理及思路,对于架构师可以很好的参考其设计理念,普通开发人员如果有兴趣也可以深入了解。

第八章Mysql、PostGreSQL、ORACLE、MONGODB

最后一章介绍了不同数据库协议支持的实现及其原理,这不是这本书的主要内容,了解即可.

最后总结,这本书最精华的部分从第四章到第七章,这部分的内容不仅需要有很扎实的理解能力,同时需要一丝不苟的实验精神,攀登技术的高峰从来都不是件容易的事,需要耐得住寂寞,耐得住性子,细致再细致的实验能力,举一反三的理解能力,同时要相信技术的力量,试想一个每秒亿级的分布式系统能够按照你的想法进行控制,无错运转,这个时候系统创造出来的价值何止上亿,这就是普通跟卓越最明显的区别。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180711G1G9OO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券