一本书精通Apache RocketMQ

简介: 一本书精通Apache RocketMQ

随着移动互联网的充分发展,各种新技术层出不穷,只有优秀的技术才能经得起行业的考验。而消息中间件是后台技术栈中绕不开的一个技术组件,其是应对海量用户、高并发、高可靠的架构挑战的超级利器。Apache RocketMQ正是这样一款足够优秀的消息中间件产品。Apache RocketMQ 脱胎于阿里巴巴的“双十一”,经过多年“双十一”洪峰流量的考验,其性能、稳定性已经得到证明,而后广泛应用于多个大型的互联网公司,如滴滴、微众银行等,已经成为国内最优秀、最受欢迎的消息中间件之一。


经过多年的发展,介绍RocketMQ的书籍、文章已不少。读者可以借助这些优秀的书籍、文章去学习RocketMQ的使用,去了解源码的实现。然而一些书籍或者博客文章大多基于源码解读的方式展开,这种方式对于深入学习确实很有益处,但是学习难度较大且较为枯燥,使初学者产生畏难情绪。


这本《Apache RocketMQ 进阶之路》的宗旨是让读者能轻松掌握Apache RocketMQ的原理、最佳实践,所以放弃了贴源码、贴示意代码的传统方式。而是大量采取图表说明的方式进行展开。希望通过这种方式能帮助读者利用地铁上、睡觉前等碎片时间轻松理解Apache RocketMQ的原理并掌握其优秀的实践。


RocketMQ长轮询技术内幕


长轮询(Long Polling)是一种比较特殊的轮询机制。讲解长轮询之前,先介绍下什么是轮询。


短轮询


简单来说,轮询也叫短轮询,短轮询就是 Pull 模式的客户端,每隔一段时间拉取一遍数据。运气好的话,可能就有数据,但是可能大部分情况运气都不好,那就做了一遍无用功,还增加了服务端的压力。为了消息的实时性足够高,轮询的频次就要足够密,但这变相又增加了服务端的压力。使用短轮询时,开发者需要权衡消息实时性和服务端压力两者的关系。如图1所示,客户端每5s请求一次最新数据,那么数据将最长在5s的时间内得到刷新,也就是说数据的展示最多会有5s的延迟。如果还需要缩短这个延迟,则需要更加频繁的访问(例如1s访问一次),但是这样也会放大服务端的压力。 图1.短轮询示意图


那么有没有可能在不增加服务端压力的前提下,也能保证实时性的轮询呢?答案就是长轮询。


长轮询


如果读者在网上去查询长轮询的概念,你很可能会得到下面一段解释。

“服务端没有相关数据,会 Hold 住请求,直到服务端有相关数据,或者等待一定时间超时才会返回。”


举一个例子(如图2所示),消费者在 10:00:00 的时候发起了 Pull 请求,但是这时候消息并没有到达,这时候服务端会 Hold 住这个请求,10 s后10:00:10 消息到了,才返回新的消息给消费者。也就是说对于客户端(消息接收者)来说,这个请求看起来处理了10s才返回,10s之后结果返回的时候就得到了最实时的内容了,这之后立刻又发起下一轮的请求。正因为这个方案也需要客户端持续性的发起查询请求,所以叫作长轮询。


图2.长轮询流程示意图


这种方案,服务端在没有数据的时候是不会给客户端作响应的,所以客户端不会持续发起没有新数据内容返回的请求,也就是说不会有无用功的产生。这一点设计很重要,因为这样保证了请求量是有限的,不会持续地增大服务端压力。同时当新消息内容产生的时候,消息又能及时的返回给接收方,感觉就像有推送一样,所以消息是很实时的,几乎能达到和Push机制一样的实时性。


这里面的第2步需要服务Hold住请求,读者可能会觉得有点玄幻,什么叫“Hold 住请求”?具体怎么实现这个 “Hold 住请求”呢?详细内容见《Apache RocketMQ 进阶之路》第四章。


  • 《Apache RocketMQ 进阶之路》的结构采取由浅入深的方式。全书分基础篇、原理篇、进阶篇。基础篇讲解Apache RocketMQ 的基础使用及一些最佳实践的总结。原理篇按模块点深入讲解Apache RocketMQ的核心设计,是Apache RocketMQ 设计中最精华的部分,通过此部分的学习,读者将深入掌握别人需要阅读源码才能掌握的优秀设计。进阶篇则是笔者在多年大型互联网项目的实践中遇到的一些高级话题、难题,能帮助不少开发人员成为优秀架构师。
  • 《Apache RocketMQ 进阶之路》告别枯燥的源码解读,以生动的案例、上百张手绘图逐层揭秘RocketMQ的原理,真正意义上做到了深入浅出;如果只推荐一本书去学习RocketMQ,本书将是最合适的一本。
  • 《Apache RocketMQ 进阶之路》采取类比讲解的方式去展开一些知识点。例如讲解顺序消息的章节同时也会介绍Kafka 的实现、在讲解事务消息的章节也会介绍分布式事务的通用解决方案,通过这种方式很容易引导读者思考和联想,使得知识的掌握更为轻松。类似课堂的学习一样,每一章的结束都会留一道或数道思考题,以便进一步加深对知识的掌握与理解。
  • 《Apache RocketMQ 进阶之路》分三大部分。第1部分是基础篇,包含第 1~4 章,主要讲解Apache RocketMQ入门及其基础使用。第2部分是原理篇,包含第 5 ~12 章,主要讲解如消费原理、负载均衡原理、顺序消息原理等核心的RocketMQ部分。第3部分是进阶篇,包含第 13~16 章,主要讲解如消息幂等、双活设计等进阶为架构师必须掌握的内容。


作者介绍



配套资源丰富



图书内文展示



相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 NoSQL JavaScript
阿里官方 Redis 开发规范
阿里官方 Redis 开发规范
|
消息中间件 存储 canal
3分钟白话RocketMQ系列—— 如何保证消息不丢失
3分钟白话RocketMQ系列—— 如何保证消息不丢失
5096 1
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
消息中间件 存储 数据库
深入学习RocketMQ的底层存储设计原理
文章深入探讨了RocketMQ的底层存储设计原理,分析了其如何通过将数据和索引映射到内存、异步刷新磁盘以及消息内容的混合存储来实现高性能的读写操作,从而保证了RocketMQ作为一款低延迟消息队列的读写性能。
|
消息中间件 存储 Kafka
RocketMQ 工作原理图解,看这篇就够了!
本文详细解析了 RocketMQ 的核心架构、消息领域模型、关键特性和应用场景,帮助深入理解消息中间件的工作原理。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
RocketMQ 工作原理图解,看这篇就够了!
|
缓存 NoSQL Java
避免缓存失效的三大杀手:缓存击穿、穿透与雪崩的解决方案
避免缓存失效的三大杀手:缓存击穿、穿透与雪崩的解决方案
1850 0
|
NoSQL Java 测试技术
【📕分布式锁通关指南 05】通过redisson实现分布式锁
本文介绍了如何使用Redisson框架在SpringBoot中实现分布式锁,简化了之前通过Redis手动实现分布式锁的复杂性和不完美之处。Redisson作为Redis的高性能客户端,封装了多种锁的实现,使得开发者只需关注业务逻辑。文中详细展示了引入依赖、配置Redisson客户端、实现扣减库存功能的代码示例,并通过JMeter压测验证了其正确性。后续篇章将深入解析Redisson锁实现的源码。
500 0
【📕分布式锁通关指南 05】通过redisson实现分布式锁
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
消息中间件 架构师 Dubbo
免费下载!《Apache RocketMQ 源码解析》带你深入了解Apache RocketMQ
本书围绕Apache RocketMQ 源码进行多方面分析,包含RocketMQ ACL、RocketMQ 消息轨迹、RocketMQ 多副本之Leader 选主等,带你深入了解Apache RocketMQ。
26701 0
免费下载!《Apache RocketMQ 源码解析》带你深入了解Apache RocketMQ

热门文章

最新文章