猜你喜欢
RocketMQ分布式消息中间件:核心原理与最佳实践

RocketMQ分布式消息中间件:核心原理与最佳实践

书籍作者:李伟 ISBN:9787121392672
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:1881
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

内容简介


本书源码以RocketMQ 4.2.0和RocketMQ 4.3.0为基础,从RocketMQ的实际使用到RocketMQ的源码分析,再到RocketMQ企业落地实践方案,逐步讲解。使读者由浅入深地了解RocketMQ。

本书在源码分析过程中,先讲整体流程,再按模块、步骤进行详细讲解,希望读者在阅读时能举一反三,能知其然且知其所以然。

本书总共九章,分为五部分,第一部分讲解消息队列入门和RocketMQ生产、消费原理与最佳实践;第二部分从整体角度讲解RocketMQ架构;第三部分讲解RocketMQ各个组件的基本原理;第四部分深入RocketMQ,讲解如何阅读源代码、如何进行企业实践;第五部分是附录,包含Namesrv、Broker的核心参数配置说明和Exporter监控指标注释。

希望读者在平时的工作中能熟悉、借鉴、参考RocketMQ的优秀设计理念,在技术能力上更进一步,在工作中更好地服务公司。


作者简介

李伟

Apache RocketMQ北京社区联合发起人,RocketMQ项目Commiter,RocketMQ社区Python客户端项目负责人。目前就职于北京某在线教育公司,担任数据中间

件架构师,负责公司内部消息和数据流平台,对分布式存储系统设计和研发有丰富经验,热衷于知识分享和社区活动。

座右铭:Programming is not only a way to problems,but also to think!


RocketMQ社区


RocketMQ是Apache软件基金会(Apache Software Foundation,简称ASF)运作的一个高级开源软件项目。

Apache软件基金会成立于1999年,是一个运作开源软件的非营利性组织。截至目前,拥有个人成员数730+、Commiter数7000+、ASF运营项目数350+,我们所熟知的开源项目有依赖管理工具Apache Maven,Web服务器Apache Tomcat,数据存储Apache HBase、Apache Hive,计算引擎Apache Flink、Apache Hadoop等。

欢迎加入Apache RocketMQ国内讨论钉钉群:


编辑推荐
适读人群 :对RocketMQ有了解、使用的经验后,想要深入源码而无从下手的人员。 ?? 希望学习消息队列和分布式系统的开发人员。 ?? 企业消息中间件维护和支持人员。 ?? RocketMQ代码贡献者。 ?? 支持开源的技术工作者。

编辑推荐


权威:Apache RocketMQ Committer编著

实用:本书分享笔者近年来在企业中治理RocketMQ的经验和所踩的坑

全面:笔者根据实践整理了RocketMQ的核心组件配置项和其说明,包含:

Namesrv全部配置项(17个)

Broker全部配置项(141个)

Prometheus Exporter核心监控指标(82个)

图文+源码:大量图文+代码快分析,读者更易理解RocketMQ原理与代码实现逻辑


前言

前  言

为什么要写这本书


2020年处于移动互联网的下半场,各种技术层出不穷,虽然数据也在爆发式增长,但是高并发、高吞吐已经不再是首要的痛点,稳定、可靠才是王道。

RocketMQ作为一款高可靠、低延迟、高并发、支持海量Topic的分布式消息中间件,服务于阿里巴巴、VIPKID、滴滴出行、微众银行、华为等国内各大企业。在阿里巴巴内的业务涵盖了阿里巴巴全部的业务,也是双11的核心链路支撑者之一。笔者所在公司选择它,也是由于RocketMQ具有高可靠、吞吐高的特点。

笔者早期接触RocketMQ时,社区的中文文档、原理讲解还是比较少的。一个偶然的机会,笔者结识了Apache RocketMQ社区的维护者,随即加入了社区,编撰文档、提交PR。在社区工作的过程中,笔者发现使用RocketMQ的企业非常多,而大家却缺乏入门之径和实际落地经验。后来,在一次社区MeetUp中,有幸和电子工业出版社的南编相识,这才萌发了写本书总结的想法。

书籍是人类进步的阶梯,笔者在编写本书的时候才真正有所体会。笔者带着总结落地经验和了解RocketMQ原理的目标来编写本书,目的是使其他使用者可以参考、借鉴,不再重复掉入我们曾经掉过的坑。


读者对象

l 对RocketMQ有了解、使用的经验后,想要深入源码而无从下手的人员。

l 希望学习消息队列和分布式系统的开发人员。

l 企业消息中间件维护和支持人员。

l RocketMQ代码贡献者。

l 支持开源的技术工作者。

如何阅读本书

本书的难度属于中级,介绍了RocketMQ的基本使用方法及其各个组件的基本原理,讲解原理时,都是采用先整体架构后详细分解的方式。详细分解时不会深入源码逐段讲,而是从代码结构出发梳理整个运行过程。

本书分为五大部分。

第一部分包含第1章、第2章和第3章,主要讲解消息队列入门和RocketMQ生产者、消费者原理与最佳实践。

第二部分包含第4章,主要介绍RocketMQ的架构设计和部署实践,也为第三部分的讲解做铺垫。

第三部分包含第5章、第6章和第7章,主要讲解RocketMQ核心组件Namesrv、Broker的基本实现原理、RocketMQ事务消息和延迟消息的设计和实现。

第四部分包含第8章和第9章,主要讲解如何阅读源代码和企业实践。

第五部分是附录,主要列举了Namesrv、Broker的核心配置项和Prometheus Exporter的指标说明。

勘误与支持

由于笔者水平有限、编撰仓促,书中难免会出现一些错误,恳请读者批评指正。如果您有更多宝贵意见和建议,请发送邮件到[email protected],期待和您交流沟通RocketMQ的原理、问题与发展。

致谢

首先感谢我的公司、平台和同事,让我有机会可以比较深入地钻研和治理RocketMQ,本书的完成是离不开大家的支持和鼓励的。

其次感谢Apache社区和社区维护者,更感谢RocketMQ的缔造者,正是因为大家的努力,方才有如今优秀的RocketMQ。

最后,我要诚挚感谢电子工业出版社的南编等其他工作人员,有了大家的幕后默默工作,才有了本书的出版。


目录

目  录

第1章 RoketMQ综述 1
1.1 什么是消息队列 2
1.2 为什么需要消息队列 4
1.2.1 削峰填谷 4
1.2.2 程序间解耦 5
1.2.3 异步处理 6
1.2.4 数据的最终一致性 6
1.3 常见消息队列 7
1.4 RocketMQ的发展史与未来 9
1.4.1 RocketMQ的发展史 9
1.4.2 Apache RocketMQ的未来 11
第2章 RocketMQ的生产者原理和最佳实践 14
2.1 生产者原理 15
2.1.1 生产者概述 15
2.1.2 消息结构和消息类型 16
2.1.3 生产者高可用 17
2.2 生产者启动流程 22
2.3 消息发送流程 32
2.4 发送消息最佳实践 36
2.4.1 发送普通消息 36
2.4.2 发送顺序消息 37
2.4.3 发送延迟消息 37
2.4.4 发送事务消息 38
2.4.5 发送单向消息 40
2.4.6 批量消息发送 41
2.5 生产者最佳实践总结 42
第3章 RocketMQ的消费流程和最佳实践 44
3.1 消费者概述 45
3.1.1 消费流程 45
3.1.2 消费模式 46
3.1.3 可靠消费 48
3.2 消费者启动机制 50
3.3 消费者的Rebalance机制 58
3.4 消费进度保存机制 65
3.5 消费方式 70
3.5.1 Pull消费流程 71
3.5.2 Push消费流程 72
3.6 消息过滤 86
3.6.1 为什么要设计过滤功能 86
3.6.2 RocketMQ支持消息过滤 86
3.7 消费者最佳实践总结 91
第4章 RocketMQ架构和部署最佳实践 94
4.1 RocketMQ架构 95
4.2 常用的部署拓扑和部署实践 96
4.2.1 常用的拓扑图 96
4.2.2 同步复制、异步复制和同步刷盘、异步刷盘 97
4.2.3 部署实践 98
第5章 Namesrv 102
5.1 Namesrv概述 103
5.1.1 什么是Namesrv 103
5.1.2 Namesrv核心数据结构和API 103
5.1.3 Namesrv和Zookeeper 105
5.2 Namesrv架构 106
5.2.1 Namesrv组件 106
5.2.2 Namesrv启动流程 108
5.2.3 Namesrv停止流程 110
5.3 RocketMQ的路由原理 111
5.3.1 路由注册 111
5.3.2 路由剔除 112
第6章 Broker存储机制 114
6.1 Broker概述 115
6.1.1 什么是Broker 115
6.1.2 Broker存储目录结构 116
6.1.3 Broker启动和停止流程 117
6.2 Broker存储机制 125
6.2.1 Broker消息存储结构 126
6.2.2 Broker消息存储机制 130
6.2.3 Broker读写分离机制 150
6.3 Broker CommitLog索引机制 155
6.3.1 索引的数据结构 155
6.3.2 索引的构建过程 158
6.3.3 索引如何使用 159
6.4 Broker过期文件删除机制 162
6.4.1 CommitLog文件的删除过程 162
6.4.2 Consume Queue、Index File文件的删除过程 166
6.5 Broker主从同步机制 167
6.5.1 主从同步概述 168
6.5.2 主从同步流程 169
6.6 Broker的关机恢复机制 174
6.6.1 Broker关机恢复概述 174
6.6.2 Broker关机恢复流程 177
第7章 RocketMQ特性――事务消息与延迟消息机制 182
7.1 事务消息概述 183
7.2 事务消息机制 184
7.2.1 生产者发送事务消息和执行本地事务 184
7.2.2 Broker存储事务消息 188
7.2.3 Broker回查事务消息 191
7.2.4 Broker提交或回滚事务消息 197
7.3 延迟消息概述 201
7.4 延迟消息机制 203
7.4.1 延迟消息存储机制 203
7.4.2 延迟消息投递机制 205
第8章 RocketMQ源代码阅读 208
8.1 RocketMQ源代码结构概述 209
8.2 RocketMQ源代码编译 212
8.3 如何阅读源代码 214
8.4 源代码阅读范例:通过消息id查询消息 216
第9章 RocketMQ企业最佳实践 224
9.1 RocketMQ落地概述 225
9.1.1 为什么选择RocketMQ 225
9.1.2 如何做RocketMQ的集群管理 226
9.2 RocketMQ集群管理 230
9.2.1 Topic管理 230
9.2.2 消费者管理 235
9.3 RocketMQ集群监控和报警 240
9.3.1 监控和报警架构 240
9.3.2 基于Grafana监控 242
9.3.3 基于Prometheus的报警 243
9.4 RocketMQ集群迁移 244
9.5 RocketMQ测试环境实践 245
9.6 RocketMQ接入实践 247
9.6.1 Spring接入RocketMQ 247
9.6.2 Python接入RocketMQ 249
附录 252

短评

有很多干货,值得一读

2020-08-15 19:04:26

标签
技术,2020
产品特色