2020年处于移动互联网的下半场,各种技术层出不穷,虽然数据也在爆发式增长,但是高并发、高吞吐已经不再是首要的痛点,稳定、可靠才是王道。
RocketMQ作为一款高可靠、低延迟、高并发、支持海量Topic的分布式消息中间件,服务于阿里巴巴、VIPKID、滴滴出行、微众银行、华为等国内各大企业。在阿里巴巴内的业务涵盖了阿里巴巴全部的业务,也是双11 的核心链路支撑者之一。笔者所在公司选择它,也是由于RocketMQ具有高可靠、吞吐高的特点。
书籍是人类进步的阶梯
适合群体
- 对RocketMQ有了解、使用的经验后,想要深入源码而无从下手的人员。
- 希望学习消息队列和分布式系统的开发人员。
- 企业消息中间件维护和支持人员。
- RocketMQ代码贡献者。
- 支持开源的技术工作者。
本书章节内容
第1章Roket和综述
什么是消息队列,消息队列到底解决了什么问题?
本章主要内容如下:
- 消息队列入门级介绍,希望大家在全面了解RocketMQ之前,对消息队列这个词有一个大致的印象,初步掌握其出现的必要性与合理性。
- 通过介绍一个场景引入消息队列的概念。
- 主流消息队列组件的比较。
- Apache RocketMQ的发展史和未来。
第2章Rocket的生产者原理和最佳实践
对于消息队列,生产者通常是入门第一个接触的对象,用于生产消息给消费者消费。本章通过介绍生产者实现类的属性、方法,引出生产者的启动过程、高可靠的实现方式等,主要讲解内容如下:
- RocketMQ支持3种消息:普通消息(并发消息)、顺序消息、事务消息。
- RocketMQ支持3种发送方式:同步发送、异步发送、单向发送。
- RocketMQ生产者最佳实践和总结。
第3章 RocketM的消费流程和最佳实践
消费者是相对第2章的生产者而言的,逻辑更加复杂。本章主要讲解的核心内容有:
- 消费者默认的两个实现类。
- 消费者的启动过程。
- 消息的消费过程。
- 可靠消费。
- 消费进度保存过程。
- 消息过滤。
第4章 Eocket的架构和部署最佳实践
RocketMQ 4.7.0是当前的最新版本,主要增加了消息轨迹、基于Dledger的副本机制。而我们目前介绍的是4.2.0版本,整体架构、部署与RocketMQ 4.7.0版本完全一致。本章的核心内容如下:
- RocketMQ体系结构。
- 常见的部署拓扑关系。
- 生产环境Namesrv、Broker、Console部署及验证部署结果。
第5章Namesrv
Namesrv 之于RocketMQ,即Zookeeper 之于Kafka,即服务注册中心之于微服务。Namesrv在RocketMQ体系中是一个Topic路由注册和管理、Broker注册和发现的管理者。
本章主要介绍了:
- Topic路由数据结构。
- Broker注册、发现及剔除机制。
- Namesrv启动、停止及执行过程。
第6章Br oker存储机制
Broker是RocketMQ体系中的核心组件之一,存储是Broker的核心功能之一,决定整个RocketMQ体系的吞吐性能、可靠性和可用性。本章主要从存储角度讲解Broker的几方面内容:
- Broker存储概述。
- Broker数据存储机制。
- Broker数据索引存储机制。
- Broker过期数据删除机制。
- Broker主从数据同步机制。
- Broker关机后数据恢复机制。
第7章Rocket和特性―—事务消息与延迟消息机制
如何优雅地解决分布式事务和延迟消息,一直都是让开发人员头疼的问题。特别是延迟消息(也叫定时消息),在消息队列组件中或多或少地会依赖一些外部“定时任务”组件。而RocketMQ同时集成了这两个功能,以非常方便、实用的方式解决了这两个问题。
本章主要内容如下:
- 事务消息概述和实现机制。
- 延迟消息概述和实现机制。
第8章RocketM构源代码阅读
为什么读者需要阅读RocketMQ源代码?笔者就自己的经验和理解做一下解答。
第一,解决公司实际场景中遇到的问题,比如异步、削峰。
第二,知其然,知其所以然。了解源代码后,在实际使用RocketMQ中能快速定位并解决问题,同时还可以避免以后遇到雷同的问题。
第三,取之于人,用之于人。将自己的思维转化为贡献代码,帮助RocketMQ社区和其他使用者解决他们的实际问题。
本章将从以下三方面讲解如何阅读源代码:
- RocketMQ源代码结构说明。
- RocketMQ源代码下载、编译。
- 举例说明如何阅读RocketMQ源代码。
第9章RocketMQ企业最佳实践
前面几章介绍了RocketMQ各个组件的功能和基本原理,本章主要介绍RocketMQ如何在企业落地,主要内容如下:
- RocketMQ集群管理。
- RocketMQ集群监控和报警。
- RocketMQ集群测试环境实践。
- Spring和Python如何接入RocketMQ ?
需要获取这份资料的小伙伴可以直接扫码
RocketMQ不单单是一个技术,它还是一个体系。一个可用的RocketMQ体系简单总结如图4-1所示。
Namesrv是RocketMQ的大脑,围绕这个“大脑”是如何设计和架构RocektMQ的呢?如图5-1所示。
在了解了Master-Slave读写分离机制后,我们接着讲解DirectMemory-Page Cache的读写分离机制,如图6-19所示。
ReputMessageService服务启动后的执行过程如图6-24所示。