RocketMQ实战与原理解析

RocketMQ实战与原理解析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2018-06
版次: 1
ISBN: 9787111600251
定价: 59.00
装帧: 其他
开本: 16开
纸张: 胶版纸
64人买过
  • 本书由云栖社区官方出品。
      作者是阿里资深数据专家,对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的通信的源码实现。掌握这些源代码以后,读者可以快速定制属于自己的具有特殊功能的消息中间件。 杨开元 

    阿里巴巴数据专家,毕业于北京大学,有10年IT行业研发经验。对RocketMQ有深入的研究,是RocketMQ源码贡献者。曾就职于甲骨文和猎豹移动,专注于大数据和实时计算。在大量的工作实践中,对MySQL、J2EE、JVM、Spring、Hadoop、Kafka、Storm、Flink都有深入研究。喜欢剖析源码,分析原理,为开源项目贡献代码。

    云栖社区

    云栖社区是面向开发者的开放型技术平台,服务于云计算技术全生态。包含博客、问答、培训、设计研发、资源下载等产品,以分享专业、优质、高效的技术为己任,帮助技术人快速成长与发展。

    欢迎关注云栖社区微信公众号:yunqiinsight ,打开精彩代码生活! 推荐序

    前言

    第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
  • 内容简介:
    本书由云栖社区官方出品。
      作者是阿里资深数据专家,对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的通信的源码实现。掌握这些源代码以后,读者可以快速定制属于自己的具有特殊功能的消息中间件。
  • 作者简介:
    杨开元 

    阿里巴巴数据专家,毕业于北京大学,有10年IT行业研发经验。对RocketMQ有深入的研究,是RocketMQ源码贡献者。曾就职于甲骨文和猎豹移动,专注于大数据和实时计算。在大量的工作实践中,对MySQL、J2EE、JVM、Spring、Hadoop、Kafka、Storm、Flink都有深入研究。喜欢剖析源码,分析原理,为开源项目贡献代码。

    云栖社区

    云栖社区是面向开发者的开放型技术平台,服务于云计算技术全生态。包含博客、问答、培训、设计研发、资源下载等产品,以分享专业、优质、高效的技术为己任,帮助技术人快速成长与发展。

    欢迎关注云栖社区微信公众号:yunqiinsight ,打开精彩代码生活!
  • 目录:
    推荐序

    前言

    第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
查看详情
相关图书 / 更多
RocketMQ实战与原理解析
Rohen人体标本解剖图谱(第9版)
[德]埃尔克·吕特延-德雷科尔 著;欧阳钧 译;[德]约翰内斯·罗恩;[日]横地千寻
RocketMQ实战与原理解析
RocketMQ实战
丁威 梁勇
RocketMQ实战与原理解析
Rootkit和Bootkit:现代恶意软件逆向分析和下一代威胁
[美]亚历克斯·马特罗索夫 (美)尤金·罗季奥诺夫 (美)谢尔盖·布拉图斯
RocketMQ实战与原理解析
RobotFramework自动化测试精解
刘云 著
RocketMQ实战与原理解析
RoyalMarsden癌症护理精要
Lisa Dougherty(英) 著;[英]Sara Lister、纪光伟、许平、刘垠良 译
RocketMQ实战与原理解析
Rong聚法大:新闻宣传中的思政实践创新
李秀云
RocketMQ实战与原理解析
Rock fracture mechanics: cracking visualization, analysis and applications(岩石断裂力学:断裂过程可视化、分析及应用)
潘鹏志
RocketMQ实战与原理解析
Robust gain-scheduling estimation and control of electrified vehicles via LPV technique
张辉;王荣蓉;王俊敏
RocketMQ实战与原理解析
RoboCup小型组足球机器人路径规划关键技术的理论与实践
杨莉;舒军
RocketMQ实战与原理解析
RocketMQ技术内幕:RocketMQ架构设计与实现原理(第2版)
丁威;张登;周继锋
RocketMQ实战与原理解析
Rossby 孤立波理论模型及演化机制分析
张瑞岗 著;陈利国;刘全生
RocketMQ实战与原理解析
RocketMQ分布式消息中间件:核心原理与最佳实践
李伟 著
您可能感兴趣 / 更多
RocketMQ实战与原理解析
中国资本市场应计异象研究
杨开元 著