[套装书]RocketMQ技术内幕:RocketMQ架构设计与实现原理(第2版)+RocketMQ实战与原理解析(2册)

作者
丁威,张登,周继锋 杨开元
丛书名
出版社
机械工业出版社
ISBN
9782109271035
简要
简介
这是一本指导读者如何在实践中让RocketMQ实现高性能、高可用、高吞吐量和低延迟的著作。 作者是RocketMQ官方认定的“优 秀布道师”和技术专家,持续在RocketMQ领域深耕。本书从源码的角度分析了RocketMQ的技术架构和实现原理,第1版获得了良好的口碑,是RocketMQ领域的标志性作品,第2版做了较大幅度的更新。 Apache RocketMQ创始人/Linux OpenMessaging创始人兼主席/Alibaba Messaging开放技术负责人冯嘉高度评价并作序推荐。 全书一共11章,逻辑上可分为3个部分: 第1部分(第1章): 简单介绍了RocketMQ的设计理念与目标,以及阅读RocketMQ源码的方法与技巧; 第二部分(第2~9章): 从源码角度对RocketMQ的技术架构以及消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步、事务消息等主要功能模块的实现原理进行了深入分析。 第三部分(第10~11章): 首先从实战的角度讲了RocketMQ监控的原理、实现和应用,然后通过各种类型的大量示例展示了RocketMQ的使用技巧。 ---------------------------8029362 - RocketMQ实战与原理解析--------------------------- . 本书由云栖社区官方出品。 作者是阿里资深数据专家,对RocketMQ有深入的研究,并有大量的实践经验。在写这本书之前,作者不仅系统、深入地阅读了RocketMQ的源代码,而且还向RocketMQ的官方开发团队深入了解了它的诸多设计细节。作者结合自己多年使用RocketMQ的经验,从开发和运维两个维度,给出了大部分场景下的优秀实践,能帮助读者在学会使用和用好RocketMQ的同时,尽量少“踩坑”。同时,本书也结合源码分析了分布式消息队列的原理,使读者可以在复杂业务场景下定制有特殊功能的消息队列。 全书共13章,在逻辑上分为两大部分: 第一部分(第1~8章):RocketMQ实战 第1~2章详细讲解了RocketMQ如何快速入门,以及在生产环境下的配置和使用; 第3~4章具体讲解了不同类型生产者和消费者的特点,以及分布式消息队列的协调者NameServer; 第5章从消息的存储、发送、复制和高可用等多个维度讲解了RocketMQ的内部机制; 第6章讨论了消息的可靠性,如何让消息队列在满足业务逻辑需求的同时稳定、可靠地长期运行; 第7章讨论了在大流量场景下,吞吐量优先时RocketMQ的使用方法; 第8章介绍RocketMQ与SpringBoot、Spark、Flink以及自定义的运维工具等其它系统的对接方法; 第二部分(第9~13章):RocketMQ原理 首先对RocketMQ的源码结构进行了整体介绍,然后深入地分析了NameServer、各种常用消费类、主从同步机制,以及基于Netty的通信的源码实现。掌握这些源代码以后,读者可以快速定制属于自己的具有特殊功能的消息中间件。
目录
[套装书具体书目]
8029362 - RocketMQ实战与原理解析 - 9787111600251 - 机械工业出版社 - 定价 59
8084165 - RocketMQ技术内幕:RocketMQ架构设计与实现原理(第2版) - 9787111690924 - 机械工业出版社 - 定价 109



---------------------------8084165 - RocketMQ技术内幕:RocketMQ架构设计与实现原理(第2版)---------------------------



前言
第1章 阅读源码前的准备1
1.1 获取和调试RocketMQ的源码1
1.1.1 Eclipse获取RocketMQ源码1
1.1.2 Eclipse调试RocketMQ源码8
1.1.3 IntelliJ IDEA获取RocketMQ源码14
1.1.4 IntelliJ IDEA调试RocketMQ源码16
1.2 RocketMQ源码的结构23
1.3 RocketMQ的设计理念和设计目标23
1.3.1 设计理念23
1.3.2 设计目标24
1.4 本章小结26
第2章 RocketMQ路由中心NameServer27
2.1 NameServer架构设计27
2.2 NameServer启动流程29
2.3 NameServer路由注册、故障剔除32
2.3.1 路由元信息32
2.3.2 路由注册35
2.3.3 路由删除40
2.3.4 路由发现43
2.4 本章小结44
第3章 RocketMQ消息发送46
3.1 漫谈RocketMQ消息发送46
3.1.1 topic路由机制47
3.1.2 消息发送高可用设计48
3.2 认识RocketMQ消息50
3.3 生产者启动流程51
3.3.1 初识DefaultMQProducer51
3.3.2 消息生产者启动流程54
3.4 消息发送基本流程55
3.4.1 消息长度验证56
3.4.2 查找主题路由信息57
3.4.3 选择消息队列60
3.4.4 消息发送65
3.5 批量消息发送72
3.6 本章小结74
第4章 RocketMQ消息存储75
4.1 存储概要设计75
4.1.1 RocketMQ存储文件的组织方式76
4.1.2 内存映射80
4.1.3 灵活多变的刷盘策略81
4.1.4 transientStorePoolEnable机制82
4.1.5 文件恢复机制82
4.2 初识消息存储83
4.3 消息发送存储流程84
4.4 存储文件组织与内存映射90
4.4.1 MappedFileQueue映射文件队列 90
4.4.2 MappedFile内存映射文件92
4.4.3 TransientStorePool99
4.5 RocketMQ存储文件100
4.5.1 CommitLog文件101
4.5.2 ConsumeQueue文件102
4.5.3 Index文件106
4.5.4 checkpoint文件110
4.6 实时更新ConsumeQueue与Index文件111
4.6.1 根据消息更新ConsumeQueue文件113
4.6.2 根据消息更新Index文件114
4.7 ConsumeQueue与Index文件恢复115
4.7.1 Broker正常停止文件恢复118
4.7.2 Broker异常停止文件恢复120
4.8 文件刷盘机制121
4.8.1 Broker同步刷盘122
4.8.2 Broker异步刷盘125
4.9 过期文件删除机制128
4.10 同步双写132
4.11 本章小结136
第5章 RocketMQ消息消费137
5.1 RocketMQ消息消费概述137
5.1.1 消费队列负载机制与重平衡138
5.1.2 并发消费模型139
5.1.3 消息消费进度反馈机制139
5.2 消息消费者初探141
5.3 消费者启动流程143
5.4 消息拉取146
5.4.1 PullMessageService实现机制147
5.4.2 ProcessQueue实现机制149
5.4.3 消息拉取基本流程150
5.5 消息队列负载与重新分布机制167
5.6 消息消费过程175
5.6.1 消息消费176
5.6.2 消息确认180
5.6.3 消费进度管理184
5.7 定时消息机制189
5.7.1 load()方法190
5.7.2 start()方法190
5.7.3 定时调度逻辑192
5.8 消息过滤机制194
5.9 顺序消息199
5.9.1 消息队列负载199
5.9.2 消息拉取200
5.9.3 消息消费201
5.9.4 消息队列锁实现208
5.10 本章小结209
第6章 RocketMQ的ACL210
6.1 什么是ACL210
6.2 如何使用ACL211
6.2.1 Broker端开启ACL211
6.2.2 客户端使用ACL212
6.3 ACL实现原理214
6.3.1 Broker端ACL核心入口214
6.3.2 PlainAccessValidator详解216
6.3.3 PlainPermissionManager详解220
6.3.4 AclClientRPCHook详解228
6.4 本章小结231
第7章 RocketMQ主从同步机制232
7.1 RocketMQ主从同步原理232
7.1.1 HAService整体工作机制233
7.1.2 AcceptSocketService实现原理233
7.1.3 GroupTransferService实现原理235
7.1.4 HAClient实现原理236
7.1.5 HAConnection实现原理239
7.2 RocketMQ读写分离机制245
7.3 RocketMQ元数据同步248
7.3.1 从节点主动同步元数据249
7.3.2 主节点消息拉取主动同步消费进度250
7.4 本章小结251
第8章 RocketMQ消息轨迹252
8.1 消息轨迹的引入目的和使用方法252
8.2 消息轨迹设计原理255
8.2.1 消息轨迹数据格式255
8.2.2 如何采集轨迹数据256
8.2.3 如何存储消息轨迹数据257
8.3 消息轨迹实现原理257
8.3.1 寻找消息轨迹入口257
8.3.2 消息发送轨迹数据259
8.3.3 消息轨迹异步转发实现机制261
8.4 本章小结265
第9章 RocketMQ主从切换266
9.1 主从切换引入目的266
9.2 Raft协议简介267
9.2.1 Leader选举267
9.2.2 日志复制268
9.3 RocketMQ DLedger主从切换之Leader选主269
9.3.1 DLedgerLeaderElector核心类及核心属性270
9.3.2 选举状态管理器初始化271
9.3.3 选举状态机状态流转273
9.3.4 发送投票请求与处理投票请求280
9.3.5 发送心跳包与处理心跳包283
9.4 RocketMQ DLedger主从切换之存储实现288
9.4.1 RocketMQ DLedger核心类及核心属性288
9.4.2 RocketMQ DLedger数据存储协议290
9.4.3 RocketMQ DLedger索引存储协议291
9.5 RocketMQ DLedger主从切换之日志追加291
9.5.1 日志追加流程概述291
9.5.2 判断Push队列是否已满293
9.5.3 Leader节点日志存储293
9.5.4 Leader节点等待从节点日志复制响应ACK298
9.6 RocketMQ DLedger主从切换之日志复制299
9.6.1 日志复制设计理念300
9.6.2 日志复制类设计体系301
9.6.3 日志转发303
9.7 RocketMQ整合DLedger设计技巧与实现原理326
9.7.1 数据存储兼容设计327
9.7.2 数据存储兼容实现原理328
9.7.3 主从切换元数据同步机制337
9.8 RocketMQ主从切换实战344
9.8.1 主从切换核心配置属性344
9.8.2 搭建主从同步环境344
9.8.3 主从同步集群升级到主从切换346
9.9 本章小结350
第10章 RocketMQ监控352
10.1 设计理念352
10.2 实现原理353
10.2.1 监控相关类图353
10.2.2 监控原始数据采集流程355
10.3 监控数据采样机制356
10.3.1 监控数据采样356
10.3.2 根据采样计算统计指标357
10.4 如何采集监控指标359
10.5 监控实战应用360
10.6 本章小结365
第11章 RocketMQ实战366
11.1 消息批量发送366
11.2 消息发送队列自选择367
11.3 消息过滤368
11.3.1 TAG过滤模式368
11.3.2 SQL过滤模式368
11.3.3 类过滤模式369
11.4 事务消息371
11.5 Spring整合RocketMQ375
11.6 Spring Cloud整合RocketMQ376
11.7 RocketMQ监控与运维命令384
11.7.1 搭建RocketMQ监控平台rocketmq-console384
11.7.2 RocketMQ管理命令387
11.8 应用场景分析423
11.9 实战案例424
11.9.1 RocketMQ集群线上故障缩容实战案例424
11.9.2 RocketMQ在线扩容实战427
11.10 本章小结430
附录 A 参数说明431
附录B RocketMQ各版本概述与升级建议436



---------------------------8029362 - RocketMQ实战与原理解析---------------------------


推荐序
前言
第1章 快速入门1
1.1 消息队列功能介绍1
1.1.1 应用解耦1
1.1.2 流量消峰2
1.1.3 消息分发3
1.2 RocketMQ简介4
1.3 快速上手RocketMQ4
1.3.1 RocketMQ的下载、安装和配置 5
1.3.2 启动消息队列服务6
1.3.3 用命令行发送和接收消息6
1.3.4 关闭消息队列6
1.4 本章小结7
第2章 生产环境下的配置和使用8
2.1 RocketMQ各部分角色介绍8
2.2 多机集群配置和部署9
2.2.1 启动多个NameServer和Broker10
2.2.2 配置参数介绍11
2.3 发送/接收消息示例13
2.4 常用管理命令15
2.5 通过图形界面管理集群21
2.6 本章小结22
第3章 用适合的方式发送和接收消息23
3.1 不同类型的消费者23
3.1.1 DefaultMQPushConsumer的使用23
3.1.2 DefaultMQPushConsumer的处理流程25
3.1.3 DefaultMQPushConsumer的流量控制28
3.1.4 DefaultMQPullConsumer30
3.1.5 Consumer的启动、关闭流程32
3.2 不同类型的生产者33
3.2.1 DefaultMQProducer 34
3.2.2 发送延迟消息36
3.2.3 自定义消息发送规则36
3.2.4 对事务的支持37
3.3 如何存储队列位置信息38
3.4 自定义日志输出42
3.5 本章小结44
第4章 分布式消息队列的协调者45
4.1 NameServer的功能45
4.1.1 集群状态的存储结构46
4.1.2 状态维护逻辑47
4.2 各个角色间的交互流程48
4.2.1 交互流程源码分析48
4.2.2 为何不用ZooKeeper50
4.3 底层通信机制50
4.3.1 Remoting模块51
4.3.2 协议设计和编解码54
4.3.3 Netty库56
4.4 本章小结56
第5章 消息队列的核心机制57
5.1 消息存储和发送57
5.2 消息存储结构58
5.3 高可用性机制60
5.4 同步刷盘和异步刷盘61
5.5 同步复制和异步复制62
5.6 本章小结63
第6章 可靠性优先的使用场景64
6.1 顺序消息64
6.1.1 全局顺序消息64
6.1.2 部分顺序消息65
6.2 消息重复问题67
6.3 动态增减机器67
6.3.1 动态增减NameServer67
6.3.2 动态增减Broker69
6.4 各种故障对消息的影响70
6.5 消息优先级72
6.6 本章小结73
第7章 吞吐量优先的使用场景74
7.1 在Broker端进行消息过滤74
7.1.1 消息的Tag和Key74
7.1.2 通过Tag进行过滤75
7.1.3 用SQL表达式的方式进行过滤75
7.1.4 Filter Server方式过滤77
7.2 提高Consumer处理能力78
7.3 Consumer的负载均衡80
7.3.1 DefaultMQPushConsumer的负载均衡80
7.3.2 DefaultMQPullConsumer的负载均衡81
7.4 提高Producer的发送速度83
7.5 系统性能调优的一般流程85
7.6 本章小结87
第8章 和其他系统交互88
8.1 在SpringBoot中使用RocketMQ88
8.1.1 直接使用88
8.1.2 通过Spring Messaging方式使用90
8.2 直接使用云上RocketMQ91
8.3 RocketMQ与Spark、Flink对接93
8.4 自定义开发运维工具93
8.4.1 开源版本运维工具功能介绍94
8.4.2 基于Tools模块开发自定义运维工具95
8.5 本章小结96
第9章 首个Apache中间件顶级项目97
9.1 RocketMQ的前世今生97
9.2 Apache顶级项目(TLP)之路98
9.3 源码结构99
9.4 不断迭代的代码100
9.5 本章小结102
第10章 NameServer源码解析103
10.1 模块入口代码的功能103
10.1.1 入口函数103
10.1.2 解析命令行参数104
10.1.3 初始化NameServer的Controller105
10.2 NameServer的总控逻辑106
10.3 核心业务逻辑处理107
10.4 集群状态存储109
10.5 本章小结111
第11章 最常用的消费类112
11.1 整体流程112
11.1.1 上层接口类112
11.1.2 DefaultMQPushConsumer的实现者114
11.1.3 获取消息逻辑116
11.2 消息的并发处理118
11.2.1 并发处理过程118
11.2.2 ProcessQueue对象121
11.3 生产者消费者的底层类122
11.3.1 MQClientInstance类的创建规则122
11.3.2 MQClientInstance类的功能124
11.4 本章小结127
第12章 主从同步机制128
12.1 同步属性信息128
12.2 同步消息体130
12.3 sync_master和async_master132
12.4 本章小结134
第13章 基于Netty的通信实现135
13.1 Netty介绍135
13.2 Netty架构总览136
13.2.1 重新实现ByteBuffer136
13.2.2 统一的异步 I/O接口137
13.2.3 基于拦截链模式的事件模型138
13.2.4 高级组件139
13.3 Netty用法示例140
13.3.1 Discard服务器140
13.3.2 查看收到的数据144
13.4 RocketMQ基于Netty的通信功能实现145
13.4.1 顶层抽象类145
13.4.2 自定义协议148
13.4.3 基于Netty的Server和Client151
13.5 本章小结152

相关资源(PDF,TXT,电子书)

村网 国学鼎 数字追踪 车牌号查询 生活分享
桂ICP备20004708号-2