RocketMQ 实战与原理解析

内容简介

本书由云栖社区官方出品。

本书作者是阿里资深数据专家,对 RocketMQ 有深入的研究,并有大量的实践经验。在写这本书之前,作者不仅系统、深入地阅读了 RocketMQ 的源代码,而且还向 RocketMQ 的官方开发团队深入了解了它的诸多设计细节。作者结合自己多年使用 RocketMQ 的经验,从开发和运维两个维度,给出了大部分场景下的优秀实践,能帮助读者在学会使用和用好 RocketMQ 的同时,尽量少“踩坑”。同时,本书也结合源码分析了分布式消息队列的原理,使读者可以在复杂业务场景下定制有特殊功能的消息队列。

适读人群

  • 需要在工作中使用分布式消息队列的人;
  • 对分布式系统原理感兴趣的人;
  • 普通 Java 程序员;
  • 希望学习优秀代码和设计方法的人

作者简介

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

本书内容

推荐序

在阿里巴巴技术发展初期,伴随着淘宝业务的快速发展,网站流量呈现几何级增长。单体巨无霸式的应用无法处理爆发式增长的流量,阿里内部从业务、组织层面进行了一次大的水平与垂直切分,拆分出用户中心、商品中心、交易中心、评价中心等平台型应用,分布式电商系统的雏形由此诞生。阿里的消息引擎就是在这样的大背景下诞生的,并被应用于各个应用系统之间的异步解耦和削峰填谷。

从最初的日志传输领域到后来阿里集团全维度在线业务的支撑,RocketMQ 被广泛用于交易、数据同步、缓存同步、IM 通讯、流计算、IoT 等场景。在近几年的双11全球狂欢节中,RocketMQ 以万亿级的消息总量支撑了全集团3000多个应用,为复杂的业务场景提供了系统解耦、削峰填谷的能力,保障了核心交易链路消息流转的低延迟、高吞吐,为阿里集团大中台的稳定性发挥了举足轻重的作用。

为了更好地发展 RocketMQ 社区生态,2016年双11前后,阿里巴巴将 RocketMQ 捐赠给 Apache 基金会,吸引了全球的开源爱好者参与到 RocketMQ 社区中,并于2017年9月成为 Apache 基金会的顶级项目。在开源社区的帮助下,RocketMQ 具备了对接主流大数据流计算平台、离在线数据处理以及对接存储平台的能力。

本书介绍了分布式消息中间件 RocketMQ 的方方面面,作者为大数据领域的技术专家,在分布式领域具有很丰富的理论积累和实战经验。书如其人,书中各章节尽展实战经验,庖丁解牛般剖析了 Apache RocketMQ 的原理和架构设计。本书深入浅出地分析了 RocketMQ 的整体架构,分享了部署和运维的经验,涵盖 RocketMQ 的核心特性——高可用、高可靠机制,以及开源生态等。

本书作为国内首本全面解析 Apache RocketMQ 的书籍,对于希望了解 RocketMQ 技术内幕,以及想要掌握分布式系统设计理念的技术人员来说的确不容错过。

——周新宇,Apache RocketMQ 项目管理委员会成员

前言

为什么要写这本书

几年前在做一个项目的时候,若需要用到消息队列,简单调研一下就会决定用 Kafka,因为当时还不知道有 RocketMQ。在我加入阿里后,当时有个项目需要用到消息中间件,试用了 RocketMQ,发现阿里开源的消息中间件性能非常强大,但是上手有点费劲,因为现有文档多是零零散散的博文。在没有合适文档指导的情况下,对系统中用到的 RocketMQ 模块心里没底,系统偶尔出现异常时总会束手无策,需要通过查看很多源码,才能保证系统的稳定运行。

熟悉 RocketMQ 以后,我发现它是一款非常优秀的中间件产品,可以确保不丢消息,而且效率很高。同时因为它是用 Java 开发的,所以修改起来比较容易。

在阿里内部,RocketMQ 很好地服务了集团大大小小上千个应用,在每年的双十一当天,更有不可思议的万亿级消息通过 RocketMQ 流转(在2017年的双11当天,整个阿里巴巴集团通过 RocketMQ 流转的线上消息达到了万亿级,峰值 TPS 达到5600万),在阿里大中台策略上发挥着举足轻重的作用。所以如果有合适的参考文档,RocketMQ 会被更多人接受和使用,让更多人不必重复造“轮子”。

我做了很多年开发,在学校课本上学的开发知识有限,大多数是通过看书和上网学到的,其中很多优秀的文章对自己帮助很大。所以我很希望能用这本书回馈技术社区中有需要的开发者们。

动笔写这本书前,我系统地阅读了 RocketMQ 的源码,有些理解不够透彻的地方请教了阿里 RocketMQ 开发团队的同事,然后也总结了自己多年实际工作中的一些经验。希望这本书能简明扼要地说清楚 RocketMQ 的使用方法和核心原理。

读者对象

  • 希望学习分布式系统或分布式消息队列的开发人员。
  • 服务端系统开发者,他们可以借助高质量中间件来提高开发效率。
  • 软件架构师,他们可以通过消息队列优化复杂系统的设计。

本书特色

本书系统地介绍了 RocketMQ 这款优秀的分布式消息队列软件,通过阅读本书,读者可以快速把 RocketMQ 应用到自己的项目中,也可以通过更改源码定制符合自身业务的消息中间件。

如何阅读本书

本书分为两大部分:

第一部分是 RocketMQ 实战,包括第1~8章。这是本书的主体内容,可帮助读者快速用好 RocketMQ 这个分布式消息队列。

这部分是按照由浅入深的方式撰写的,为了让读者快速上手,首先介绍了搭建一个简单 RocketMQ 集群的方法,以此来发送和接收消息;然后详细介绍了如何用好 Consumer 和 Producer,如何选择合适的类以及进行参数设置;再进一步根据应用,说明如何让 RocketMQ 在各种异常情况下保持稳定可靠,以及如何增大 RocketMQ 的吞吐量,从而在单位时间内处理更多的消息。

第二部分是源码分析,包括第9~13章。当读者有特殊的业务需求,需要更改或扩展 RocketMQ 现有功能的时候,这部分内容能帮助读者快速熟悉源码,找到要下手更改的地方,快速实现想要的功能。

这部分也适合想通过源码,深入学习消息队列的读者阅读。学习别人优秀的代码是提升自己技术水平的一条有效途径。

勘误和支持

由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。有任何的意见或建议,都可以通过邮箱 [email protected] 和我联系,真挚期待你的反馈。

致谢

写技术书籍很耗费时间,加之互联网行业快节奏的工作方式,导致我写这本书的时间大多是在周末和夜晚。在此感谢家人对我的支持和理解,尤其感谢我的妻子,没有她对家庭的照顾和对我的鼓励,这本书是无法完成的。

感谢阿里消息中间件团队的 Leader 王小瑞,是你从技术和写作思路上给我很大的帮助。感谢消息中间件团队的其他同学,你们为开源社区贡献了一个高质量的软件,你们写的很多高质量博文使开发者更容易理解 RocketMQ。

感谢机械工业出版社的编辑杨福川、张锡鹏,感谢云栖社区的刁云怡,阿里的校友耿嘉安,是你们始终支持我的写作,你们的引导和帮助使我能顺利完成全部书稿。

谨以本书献给我最亲爱的家人,以及众多热爱软件开发工作的朋友们!

杨开元

第1章 快速入门
第2章 生产环境下的配置和使用
第3章 用适合的方式发送和接收消息(上)
第3章 用适合的方式发送和接收消息(下)
第4章 分布式消息队列的协调者
第5章 消息队列的核心机制
第6章 可靠性优先的使用场景
第7章 吞吐量优先的使用场景
第8章 和其他系统交互
第9章 首个 Apache 中间件顶级项目
第10章 NameServer 源码解析
第11章 最常用的消费类
第12章 主从同步机制
第13章 基于 Netty 的通信实现(上)
第13章 基于 Netty 的通信实现(下)

阅读全文: http://gitbook.cn/gitchat/geekbook/5bcd6683211d0e68b1b725ca

猜你喜欢

转载自blog.csdn.net/valada/article/details/83784954