新書推薦:
《
明代社会变迁时期生活质量研究
》
售價:NT$
1367.0
《
律令国家与隋唐文明
》
售價:NT$
332.0
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:NT$
449.0
《
现代吴语的研究(中华现代学术名著3)
》
售價:NT$
296.0
《
天下的当代性:世界秩序的实践与想象(新版)
》
售價:NT$
352.0
《
德国天才4:断裂与承续
》
售價:NT$
500.0
《
妈妈的情绪,决定孩子的未来
》
售價:NT$
194.0
《
推拿纲目
》
售價:NT$
1836.0
|
編輯推薦: |
(1)作者是RocketMQ社区布道师和开源分布式数据库中间件Mycat负责人,经验丰富。
(2)RocketMQ创始人Alibaba Messaging开源技术负责人Linux OpenMessaging创始人作序推荐。
(3)源代码角度:深入分析RocketMQ的核心技术架构和各主要功能模块的实现原理;应用角度:系统总结RocketMQ的使用方法和技巧。
|
內容簡介: |
内容简介
本书由RocketMQ社区早期的布道者和技术专家撰写,Apache RocketMQ创始人Linux OpenMessaging创始人兼主席Alibaba Messaging开源技术负责人冯嘉的高度评价并作序推荐。
源码角度,本书对RocketMQ的核心技术架构,以及消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步HA、事务消息等主要功能模块的实现原理进行了深入分析,同时展示了源码阅读的相关技巧;应用层面,本书总结了大量RocketMQ的使用技巧。通过本书,读者将深入理解消息中间件和底层网络通讯机制的核心知识点。
全书共10章,分三个部分:
*部分 准备篇(第1章)
首先介绍了RocketMQ源代码的获取、结构和调试,然后介绍了RocketMQ的设计理念和目标。
第二部分 实现篇(第2~8章)内容简介
本书由RocketMQ社区早期的布道者和技术专家撰写,Apache RocketMQ创始人Linux OpenMessaging创始人兼主席Alibaba Messaging开源技术负责人冯嘉的高度评价并作序推荐。
源码角度,本书对RocketMQ的核心技术架构,以及消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步HA、事务消息等主要功能模块的实现原理进行了深入分析,同时展示了源码阅读的相关技巧;应用层面,本书总结了大量RocketMQ的使用技巧。通过本书,读者将深入理解消息中间件和底层网络通讯机制的核心知识点。
全书共10章,分三个部分:
*部分 准备篇(第1章)
首先介绍了RocketMQ源代码的获取、结构和调试,然后介绍了RocketMQ的设计理念和目标。
第二部分 实现篇(第2~8章)
这是本书的核心部分,从源代码的角度详细分析了消息发送、消息存储、消息消费、消息过滤、顺序消息、主从同步HA、事务消息等主要功能模块的架构设计和实现原理。
第三部分 实例篇(第9-10章)
通过示例展示RocketMQ的使用技巧,并着重讲解了RocketMQ的监控命令与监控管理界面。
|
關於作者: |
作者简介
丁威
Java、分布式服务架构、中间件等多个领域的技术专家,擅长高并发编程、Netty网络编程、RocketMQ等技术,国内知名开源数据库中间件MyCAT的志愿者和技术顾问。目前担任上海优速物流的技术专家和经营支撑部门的架构师。对RocketMQ有非常深入的研究,是RocketMQ社区的布道师,不仅实践经验丰富,而且对其源代码有深入且系统的研究。
周继锋
拥有10余年大型项目架构设计及实战经验,曾主导过众多分布式系统、微服务及大数据项目。在高并发、高可用、高可扩展性、高可维护性等领域有丰富经验,对Hadoop、Spark源码进行过深度分析并具有丰富的实战经验。 曾在ERP、医学、互联网行业担任工程师、架构师、技术总监等职务,炼数成金高级讲师及国内知名的开源分布式数据库中间件Mycat负责人,也是《分布式数据库架构及企业实践:基于Mycat中间件》书籍的作者。
|
目錄:
|
推荐序
前言
第1章 阅读源代码前的准备1
1.1 获取和调试RocketMQ的源代码1
1.1.1 Eclipse获取RocketMQ源码2
1.1.2 Eclipse调试RocketMQ源码9
1.1.3 IntelliJ IDEA获取RocketMQ源码15
1.1.4 IntelliJ IDEA调试RocketMQ源码20
1.2 RocketMQ源代码的目录结构27
1.3 RocketMQ的设计理念和目标28
1.3.1 设计理念28
1.3.2 设计目标28
第2章 RocketMQ路由中心NameServer31
2.1 NameServer架构设计31
2.2 NameServer启动流程32
2.3 NameServer路由注册、故障剔除36
2.3.1 路由元信息36
2.3.2 路由注册38
2.3.3 路由删除43
2.3.4 路由发现46
2.4 本章小结47
第3章 RocketMQ消息发送49
3.1 漫谈RocketMQ消息发送49
3.2 认识RocketMQ消息50
3.3 生产者启动流程51
3.3.1 初识DefaultMQProducer消息发送者51
3.3.2 消息生产者启动流程54
3.4 消息发送基本流程56
3.4.1 消息长度验证56
3.4.2 查找主题路由信息56
3.4.3 选择消息队列60
3.4.4 消息发送65
3.5 批量消息发送71
3.6 本章小结74
第4章 RocketMQ消息存储75
4.1 存储概要设计75
4.2 初识消息存储76
4.3 消息发送存储流程78
4.4 存储文件组织与内存映射83
4.4.1 MappedFileQueue映射文件队列84
4.4.2 MappedFile内存映射文件87
4.4.3 TransientStorePool93
4.5 RocketMQ存储文件94
4.5.1 Commitlog文件95
4.5.2 ConsumeQueue文件97
4.5.3 Index索引文件100
4.5.4 checkpoint文件104
4.6 实时更新消息消费队列与索引文件105
4.6.1 根据消息更新ConumeQueue107
4.6.2 根据消息更新Index索引文件108
4.7 消息队列与索引文件恢复109
4.7.1 Broker正常停止文件恢复112
4.7.2 Broker异常停止文件恢复114
4.8 文件刷盘机制115
4.8.1 Broker同步刷盘116
4.8.2 Broker异步刷盘119
4.9 过期文件删除机制122
4.10 本章小结126
第5章 RocketMQ消息消费127
5.1 RocketMQ消息消费概述127
5.2 消息消费者初探128
5.3 消费者启动流程130
5.4 消息拉取133
5.4.1 PullMessageService实现机制133
5.4.2 ProcessQueue实现机制136
5.4.3 消息拉取基本流程138
5.5 消息队列负载与重新分布机制154
5.6 消息消费过程162
5.6.1 消息消费163
5.6.2 消息确认ACK167
5.6.3 消费进度管理171
5.7 定时消息机制176
5.7.1 load方法177
5.7.2 start方法178
5.7.3 定时调度逻辑179
5.8 消息过滤机制181
5.9 顺序消息186
5.9.1 消息队列负载187
5.9.2 消息拉取187
5.9.3 消息消费188
5.9.4 消息队列锁实现195
5.10 本章小结196
第6章 消息过滤FilterServer198
6.1 ClassFilter运行机制198
6.2 FilterServer注册剖析199
6.3 类过滤模式订阅机制202
6.4 消息拉取205
6.5 本章小结206
第7章 RocketMQ主从同步HA机制207
7.1 RocketMQ主从复制原理207
7.1.1 HAService整体工作机制208
7.1.2 AcceptSocketService实现原理208
7.1.3 GroupTransferService实现原理210
7.1.4 HAClient实现原理211
7.1.5 HAConnection实现原理214
7.2 RocketMQ读写分离机制220
7.3 本章小结223
第8章 RocketMQ事务消息225
8.1 事务消息实现思想225
8.2 事务消息发送流程226
8.3 提交或回滚事务232
8.4 事务消息回查事务状态233
8.5 本章小结240
第9章 RocketMQ实战242
9.1 消息批量发送242
9.2 消息发送队列自选择243
9.3 消息过滤243
9.3.1 TAG模式过滤244
9.3.2 SQL表达模式过滤244
9.3.3 类过滤模式245
9.4 事务消息247
9.5 Spring整合RocketMQ250
9.6 Spring Cloud整合RocketMQ251
9.7 RocketMQ监控与运维命令258
9.7.1 RocktetMQ监控平台搭建258
9.7.2 RocketMQ管理命令261
9.8 应用场景分析280
9.9 本章小结281
附录A 参数说明282
|
內容試閱:
|
为什么要写这本书
随着互联网技术蓬勃发展,微服务架构思想的兴起,系统架构开始追求小型化、轻量化,原有的大型集中式的IT系统通常需要进行垂直拆分,孵化出颗粒度更小的众多小型系统,因此对系统间松耦合的要求越来越高,目前RPC、服务治理、消息中间件几乎成为互联网架构的标配。
引入消息中间件,服务之间可以通过可靠的异步调用,降低系统之间的耦合度,提高系统的可用性。消息中间件的另一个重要应用场景是解决系统之间数据的一致性(最终一致性)。
RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,承载了阿里双11大部分业务,可以说是一名久经战场的精英、值得信任的伙伴。同时它的开发语言为Java,自然而然地得到了广大互联网架构师们的青睐,成为互联网行业首选的消息中间件。
初次接触RocketMQ是在听到阿里巴巴正式将RocketMQ捐献给Apache基金会,成为Apache的顶级开源项目时,这意味着承载阿里双11巨大流量的消息中间件完全走向开源,对广大Java开发者来说无疑是一个巨大的利好,让我们有机会一睹高性能消息中间件RocketMQ的真容。作为一名阿里技术崇拜者,我内心异常激动,于是不假思索地在CSDN上开通了专栏源码研究RocketMQ,受到了广大技术朋友的支持。
RocketMQ作为一款高性能消息中间件,其核心优势是可靠的消息存储、消息发送的高性能与低延迟、强大的消息堆积能力与消息处理能力、严格的顺序消息模式等。RocketMQ的另一个核心思想是懂得取舍。软件设计不可能做到面面俱到,消息中间件的理想状态是一条消息能且只能被消费一次,但要做到这一点,必然需要牺牲性能。RocketMQ的设计者解决这一难题的办法是不去解决,即保证消息至少被消费一次,但不承诺消息不会被消费者多次消费,其消费的幂等由消费者实现,从而极大地简化了其实现内核,提高了RocketMQ的整体性能。
自从RocketMQ被捐献给Apache基金会后便在快速发展,RocketMQ的设计者们正在制定消息中间件的新规范,其模块为openmessaging。本书主要是抛砖引玉,与各位读者朋友们探讨RocketMQ的实现原理,使读者能更好地在实际项目中应用RocketMQ。
读者对象
RocketMQ用户和爱好者
RocketMQ代码开发志愿者
Java中高级开发工程师
Java架构师
有志于从事Java开源的相关技术从业者
本书特色
本书从源码的角度对RocketMQ的实现原理进行详细剖析,从中阐述了作者学习阅读源码的方法。本书作为一本源码阅读类书籍,其讲解切入点并不是以组成RocketMQ的一个个源码包进行展开,而是基于功能模块(如Topic路由中心、消息发送、消息存储、消息消费、事务消息)来展开,更加贴近实战需求。
如何阅读本书
本书分为三大部分。
第一部分为准备篇(第1章),简单介绍了RocketMQ的设计理念与目标,并介绍了在开发工具中如何对RocketMQ进行代码调试。
第二部分为实现篇(第2~8章),重点讲解了RocketMQ各个功能模块的实现原理,包括NameServer、消息发送、消息存储、消息消费、消息过滤、顺序消息、事务消息等。
第三部分为实例篇(第9章),通过示例展示RocketMQ的使用技巧,着重讲解了RocketMQ的监控命令与监控管理界面。
本书在最后的附录中给出了RocketMQ的主要参数列表及含义,供读者参考。
本书的行文思路主要是根据消息发送的全流程进行展开,从路由管理到消息发送、消息存储、消息消费,再到顺序消息、事务消息,从而实现消息链路的闭环。建议读者按照该思路,带着问题来阅读本书,或许会事半功倍。
勘误和支持
除封面署名外,参加本书编写工作的还有陈鹏飞。由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,大家可以通过CSDN博客专栏(https:blog.csdn.netcolumndetails20603.html)留言反馈。书中的全部源文件可以从github rocketmq官方仓库中下载,我也会将相应的功能及时更新。如果你有更多的宝贵意见,也欢迎发送邮件至dw19871218pmz@126.com,期待能够得到你的真挚反馈。
致谢
首先要感谢MyCAT开源社区负责人周继锋对我的提携与指导,为我的职业发展指明前进的方向。
感谢RocketMQ联盟中每一位充满创意和活力的朋友奔腾、zenk、共产国际史派克、水动力皮划艇、张登、张凤凰、曾文、季永超,以及名单之外的很多朋友,感谢你们对我的支持与帮助。感谢杨福川老师的引荐,是你的努力才促成了本书的成功出版。
感谢机械工业出版社华章公司的编辑张锡鹏,在这一年多的时间中始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
最后感谢我的爸爸、妈妈、爷爷、奶奶,感谢你们将我培养成人,并时时刻刻为我灌输着信心和力量!感谢我的老婆、女儿,你们是我持续努力的最大动力。
谨以此书献给我最亲爱的家人,以及众多热爱RocketMQ的朋友们!
丁威
感谢RocketMQ团队,是你们的付出才有这么好的产品,同时感谢杨福川编辑对本书出版工作的支持。
谨以此书献给我最亲爱的家人和同事,以及帮助过、关注过我的人,以及使用、学习过RocketMQ的朋友们!
周继锋
|
|