具体描述
《分布式数据库架构及企业实践——基于Mycat中间件》由资深 Mycat 专家及一线架构师、DBA 编写而成。全书总计 8 章,首先简单介绍了分布式系统和分布式数据库的需求,然后讲解了分布式数据库的实现原理,并对市场上存在的各种分布式数据库中间件进行了对比,再围绕着如何利用 Mycat 实现分布式数据库而展开。《分布式数据库架构及企业实践——基于Mycat中间件》对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、分布式事务及原生 MySQL、PostgreSQL 协议等核心技术。通过本书不仅可以了解 Mycat 的基本概念,掌握 Mycat 配置等技术,还能感受到 Mycat 的架构设计之美,了解 Mycat 2.0的未来规划。
无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理,还是对于资深 IT 人士来说,《分布式数据库架构及企业实践——基于Mycat中间件》都极具参考价值。
作者简介
周继锋
拥有十多年大型项目架构设计及实战经验,曾主导过众多分布式系统、微服务及大数据项目。在高并发、高可用、高可扩展性、高可维护性等领域拥有丰富的经验,对Hadoop、Spark源码进行过深度分析并具有丰富的实战经验。曾在ERP、医学、互联网行业担任资深工程师、资深架构师、技术总监等职务,为炼数成金高级讲师及国内知名的开源分布式数据库中间件Mycat的负责人。
冯钻优
多年来致力于分布式系统架构、分布式数据库、大数据技术的研究,在高并发、高可用的分布式系统设计和大数据处理方面有着丰富的经验。曾担任架构师、开发经理、技术经理等职位,主导过大型分布式系统、大数据分析项目的开发及实施落地,属于理论兼实践型架构师,现于某大型央企担任高级架构师、高级经理,为国内知名的开源分布式数据库中间件Mycat的高级顾问。
陈胜尊
拥有多年编程经验,专注于电信运营商大数据项目的设计及开发,擅长Hadoop生态圈的大数据分析技术、分布式架构设计、高并发架构设计、MySQL优化,曾主导众多大数据项目的架构设计。为国内知名的开源分布式数据库中间件Mycat的活跃开发者。
左越宗
拥有多年数据库管理经验,维护过超过500台以上的数据库实例,精通NoSQL集群维护与优化、异构数据迁移、关系型数据库集群设计、分布式架构设计、SQL优化及数据库软件性能优化等,曾在互联网金融、在线教育、游戏行业担任高级MySQL DBA、数据库集群工程师、数据库专家等职位。为尚观科技高级讲师及国内知名的开源分布式数据库中间件Mycat的高级顾问。
目录信息
1.1 什么是分布式系统 1
1.2 为什么需要分布式数据库 2
1.3 分布式数据库的实现原理 3
1.4 Mycat 数据库中间件简介 5
1.4.1 Mycat 的历史与未来规划 5
1.4.2 Mycat 与其他中间件的区别 8
1.4.3 Mycat 的优势 10
1.4.4 Mycat 的适用场合 11
第 2 章 Mycat 入门 13
2.1 环境搭建 13
2.1.1 Windows 环境搭建 13
2.1.2 Linux 环境搭建 15
2.2 Mycat 核心概念详解 16
2.2.1 逻辑库(schema) 16
2.2.2 逻辑表(table) 16
2.2.3 分片节点(dataNode) 17
2.2.4 节点主机(dataHost) 17
2.3 Mycat 原理介绍 18
2.4 参与 Mycat 源码开发 19
2.4.1 Mycat 源码环境搭建 19
2.4.2 Mycat 源码调试 19
第 3 章 Mycat 进阶 22
3.1 Mycat 配置详解 22
3.1.1 Mycat 支持的两种配置方式 22
3.1.2 server.xml 配置文件 23
3.1.3 schema.xml 配置文件 28
3.1.4 sequence 配置文件 37
3.1.5 zk-create.yaml 配置文件 41
3.1.6 其他配置文件 44
3.2 Mycat 分片规则详解 46
3.2.1 分片表与非分片表 46
3.2.2 ER 关系分片表 46
3.2.3 分片规则 rule.xml 文件详解 46
3.2.4 取模分片 47
3.2.5 枚举分片 48
3.2.6 范围分片 49
3.2.7 范围求模算法 49
3.2.8 固定分片 hash 算法 50
3.2.9 取模范围算法 52
3.2.10 字符串 hash 求模范围算法 53
3.2.11 应用指定的算法 54
3.2.12 字符串 hash 解析算法 54
3.2.13 一致性 hash 算法 55
3.2.14 按日期(天)分片算法 56
3.2.15 按单月小时算法 57
3.2.16 自然月分片算法 58
3.2.17 日期范围 hash 算法 58
3.3 Mycat 管理命令详解 59
3.3.1 Reload 命令 61
3.3.2 Show 命令 62
第 4 章 Mycat 高级技术实战 68
4.1 用 Mycat 搭建读写分离 68
4.1.1 MySQL 读写分离 69
4.1.2 MySQL Galera Cluster 读写分离 73
4.1.3 SQL Server 读写分离 83
4.2 Mycat 故障切换 86
4.2.1 Mycat 主从切换 86
4.2.2 MySQL Galera 节点切换 99
4.3 Mycat+Percona+HAProxy+Keepalived 113
4.3.1 Mycat 113
4.3.2 Percona 集群 124
4.3.3 HAProxy 131
4.3.4 Keepalived 138
4.4 MHA+Keepalived 集群搭建 140
4.4.1 配置 MySQL 半同步方式 142
4.4.2 安装配置 MHA 150
4.4.3 测试重构 153
4.4.4 扩展 Keepalived 155
4.5 用 ZooKeeper 搭建 Mycat 高可用集群 158
4.5.1 ZooKeeper 概述 158
4.5.2 ZooKeeper 的运用场景 161
4.5.3 ZooKeeper 在 Mycat 中的使用 163
4.6 Mycat 高可用配置 165
4.7 Mycat 注解技术 170
4.7.1 balance 注解实战 170
4.7.2 master/slave 注解实战 172
4.7.3 SQL 注解实战 173
4.7.4 schema 注解实战 176
4.7.5 dataNode 注解实战 176
4.7.6 catlet 注解实战 177
第 5 章 Mycat 企业运维 179
5.1 Mycat 性能监控——Mycat-web 详解 179
5.1.1 Mycat-web 简介 179
5.1.2 Mycat-web 的配置和使用 180
5.1.3 Mycat 性能监控指标 181
5.2 Mycat 性能优化 183
5.3 MySQL 优化技术 186
5.3.1 数据库建表设计规范 186
5.3.2 SQL 语句与索引 195
5.3.3 配置文件 206
5.3.4 InnoDB 选择文件系统 212
5.3.5 系统架构 213
第 6 章 Mycat 架构剖析 215
6.1 Mycat 总体架构介绍 215
6.2 Mycat 网络 I/O 架构与实现 218
6.2.1 Mycat I/O 架构概述 218
6.2.2 前端通信框架 221
6.3 Mycat 线程架构与实现 224
6.3.1 多线程基础 224
6.3.2 Mycat 线程架构 226
6.4 Mycat 内存管理及缓存架构与实现 228
6.4.1 Mycat 内存管理 229
6.4.2 Mycat 缓存架构与实现 231
6.5 Mycat 连接池架构与实现 232
6.5.1 Mycat 连接池 232
6.5.2 Mycat 连接池架构及代码实现 234
6.6 Mycat 主从切换架构与实现 235
6.6.1 Mycat 主从切换概述 236
6.6.2 Mycat 主从切换的实现 238
第 7 章 Mycat 核心技术分析 241
7.1 Mycat 分布式事务的实现 241
7.1.1 XA 规范 241
7.1.2 二阶段提交 242
7.1.3 三阶段提交 243
7.1.4 Mycat 中分布式事务的实现 244
7.2 Mycat SQL 路由的实现 249
7.2.1 路由的作用 249
7.2.2 SQL 解析器 250
7.2.3 路由计算 252
7.3 Mycat 跨库 Join 的实现 260
7.3.1 全局表 261
7.3.2 ER 分片 262
7.3.3 catlet 263
7.3.4 ShareJoin 264
7.4 Mycat 数据汇聚和排序的实现 270
7.4.1 数据排序 270
7.4.2 数据汇聚 273
第 8 章 Mycat多数据库支持原理与实现 275
8.1 MySQL 协议在 Mycat 中的实现 275
8.1.1 MySQL 协议概述 275
8.1.2 Mycat 的 MySQL 协议实现 283
8.2 PostgreSQL 协议在 Mycat 中的实现 287
8.2.1 PostgreSQL 介绍 287
8.2.2 PostgreSQL 协议 288
8.2.3 PostgreSQL 实现 293
8.3 Mycat 对 JDBC 支持的实现 298
8.3.1 Oracle 配置 299
8.3.2 SQL Server 配置 300
8.3.3 MongoDB 配置 301
8.3.4 源码分析 306
· · · · · · (收起)
读后感
用户评价
从整体的厚度和内容密度来看,这本书的内容量是相当扎实的,这表明作者在撰写过程中投入了巨大的精力去消化和提炼信息。我关注的另一个点是安全性和合规性问题,尤其是在数据安全法规日益严格的今天,分布式架构下的数据加密、访问控制和审计机制是不可或缺的。我希望这本书能在这个方面有所建树,提供如何将安全策略集成到中间件层面的具体指导。此外,对于运维团队来说,如何有效地监控整个分布式系统的健康状况,如何设置合理的告警阈值,这些细节决定了系统稳定运行的上限。如果这本书能提供一套完整的监控指标体系和相应的Prometheus/Grafana集成方案,那无疑会大大减轻运维人员的负担。这本书在我心中,应该是一本能够指导企业从“能用”走向“好用”和“可靠”的权威指南。
这本书的封面设计很有吸引力,那种深邃的蓝色调配上清晰的白色字体,一下子就给人一种专业、可靠的感觉。我特意留意了一下作者的背景,感觉他们在这个领域绝对是摸爬滚打了好多年,不是那种纸上谈兵的理论家。所以,从这本书的包装和作者介绍来看,我预期它应该是一本非常实用的操作手册,而不是晦涩难懂的学术著作。它应该能帮我解决实际工作中遇到的那些棘手的分布式数据一致性、性能瓶颈和架构选型难题。特别是对于我们这种正在考虑或已经在使用国产中间件的企业来说,这本书的价值简直不可估量。我希望它能在架构设计思路上给我们带来启发,比如如何更平滑地进行数据迁移、如何在不停服的情况下重构现有系统,这些都是我目前最关心的点。如果这本书能提供一些详细的案例分析,展示不同规模企业的实践经验,那就更完美了,毕竟理论和实践之间总是有巨大的鸿沟需要填补。从整体感觉上来说,这本书散发着一种“干货满满”的气息,让人忍不住想立刻翻开它。
拿到书后,我首先尝试着浏览了一下目录结构,它的编排逻辑非常清晰,从基础的概念梳理,到核心组件的深入剖析,再到最后的运维和调优实践,层层递进,符合一个技术人员的学习习惯。尤其让我感到惊喜的是,它似乎没有停留在简单介绍“这是什么”的层面,而是着重讲解了“为什么是这样”以及“在什么场景下应该怎么做”。我非常看重这种深入底层逻辑的讲解方式,因为只有理解了背后的原理,才能在遇到突发情况时快速定位问题并给出合理的解决方案,而不是盲目地套用网上的零散配置。我猜测这本书的重点可能放在了如何利用这个中间件的特性去优化查询性能和保证事务的完整性上,毕竟在分布式环境中,这两点是永恒的挑战。如果书中能详细对比几种不同的数据同步策略的优缺点和适用场景,那对于我们团队制定长期技术路线图将是极大的帮助。
我一直对如何在高并发、大数据量的场景下保持数据一致性非常头疼,感觉这是一个几乎无解的难题。这本书如果能针对性地提供一些成熟的解决方案和最佳实践,那将是无价之宝。我特别期待看到关于跨中心数据复制和灾备策略的章节,这对于需要实现异地容灾的企业来说至关重要。我希望作者能坦诚地分享一些在实际项目中遇到的“坑”,比如在某个版本升级时出现的兼容性问题,或者在特定负载模式下发现的性能瓶颈。技术书籍最大的价值往往不在于它告诉你一切都是完美的,而在于它敢于揭示那些隐藏在光鲜架构背后的复杂性和痛苦。如果这本书能提供一个真实世界的、经过时间检验的、有血有肉的架构演进故事,那么它就超越了一本普通的工具书,成为了一个宝贵的经验集。
这本书的语言风格似乎非常务实,没有过多的文学色彩,每一个技术点都用非常直接和准确的术语来描述,这对于技术人员来说是非常友好的。我通常不喜欢那种故作高深的表达方式,阅读技术书籍最重要的是效率和准确性。我注意到排版上也做了优化,大量使用图表和代码片段来辅助说明复杂的流程,这极大地降低了理解门槛。我希望书中能对配置文件的每一个关键参数都给出详细的解释和推荐值,因为在实际部署中,一个微小的配置错误就可能导致整个集群的不稳定。如果能附带一些脚本工具的示例就更好了,比如用于集群部署、健康检查或者压力测试的自动化脚本。总而言之,它给我的感觉是一本可以随时放在手边,需要时能快速查阅并能立刻应用到生产环境中的参考工具书,而不是一本读完就束之高阁的教程。
读了前几章,仅入门,后期在细读。
有些比如check脚本是从网上拷贝下来的,有些语法明显错的,作者一点不负责
读了前几章,仅入门,后期在细读。
有些比如check脚本是从网上拷贝下来的,有些语法明显错的,作者一点不负责
还不错