5、消息队列的核心机制
介绍了RocketMQ消息队列实现的难点及核心,即“队列”本身的实现,基于磁盘做一个读写效率高的队列并非易事,实现不好就会使磁盘操作成为整个系统的瓶颈,无法提升系统的吞吐量。RocketMQ基于“顺序写”“随机读”的原则来设计,利用“零拷贝”技术,克服了磁盘操作的瓶颈。
另一个难点是为了高可用性而设计的主从机制,数据被及时复制到多个机器,这样当一台机器出故障后,整体系统依然可用。这样可靠性和性能能直接有个权衡,RocketMQ 把选择权留给用户,用户根据具体的业务场景来选择要更高的可靠性,还是要更高的效率。
-
消息存储和发送
-
消息存储结构
-
高可用性机制
-
同步刷盘和异步刷盘
-
同步复制和异步复制
6、可靠性优先的使用场景
本篇根据使用场景,讨论如何“可靠”地收发消息。即在要求消息顺序的场景下,如何既能并发执行,又能保证消息顺序;然后分析可能的故障场景下,如何应对以保证不丢消息、 不中断服务。RocketMQ 在设计上,有重试机制来保证消息不丢,造成的结果是可能存在消息重复,这一点需要用户根据具体业务场景来处理。下一章将讨论处理大数据量消息的方法。
-
顺序消息
-
消息重复问题
-
动态增减机器
-
各种故障对消息的影响
-
消息优先级
7、吞吐量优先的使用场景
本篇重点关注性能,关注在大消息量的情况下,如何提高RocketMQ的吞吐量。首先介绍了消息过滤,在服务端进行消息过滤可以减少无效消息传输造成的带宽浪费,Tag是最常用的一种高效过滤方式,此外还可以用SQL表达式、FilterServer来过滤消息。
另一个提高吞吐量的方法是增加集群的机器数量,提高并发性,要根据实际场景增加Broker、Consumer 或Producer角色的机器数量。
-
在Broker端进行消息过滤
-
提高Consumer处理能力
-
Consumer的负载均衡
-
提高Producer的发送速度
-
系统性能调优的一般流程
由于篇幅原因,这份RocketMQ核心实战原理解析已经被整理成了PDF文档,有需要这份RocketMQ核心实战原理解析完整文档的麻烦转发后添加VX:bmx9257 即可免费领取!
8、和其他系统交互
作为一个中间件产品,会比普通软件更多地需要和其他系统打交道,本篇介绍了如何与SpringBoot、 Spark、 Flink等软件进行交互。同时介绍了使用云端的RocketMQ产品,以及自定义开发运维工具的方法。
-
在SpringBoot中使用RocketMQ
-
直接使用云上RocketMQ
-
RocketMQ与Spark、Flink对接
-
自定义开发运维工具
9、首个Apache中间件顶级项目
RocketMQ是阿里最优秀的中间件之一,本篇介绍了RocketMQ的历史,以及其目前作为Apache顶级项目的现状。
-
RocketMQ的前世今生
-
Apache顶级项目(TLP) 之路
-
源码结构
-
不断迭代的代码
10、NameServer源码解析
本篇分析了NameServer模块的源码,NameServer是–个功能重要但是代码量不大的模块,所以选择这个模块入手,比较容易理解。我们在分析源码时,认真读懂一个模块后就可以对作者的代码风格、设计偏好等有基本的了解。
-
模块入口代码的功能
-
NameServer的总控逻辑
-
核心业务逻辑处理
-
集群状态存储
11、最常用的消费类
本篇分析的是Client模块里的代码,我们在使用RocketMQ的时候,更多的是和这个模块里的代码打交道。本章重点分析了DefaultMQPushConsumerImpl类,然后分析了Consumer的并发处理过程,最后分析了客户端Class统一的底层通信类MQClientInstance。
-
整体流程
-
消息的并发处理.
-
生产者,消费者的底层类
12、主从同步机制
本篇分析了Master和Slave角色的Broker之间同步信息功能的实现。需要同步的信息分为两种类型,实现方式各不相同:一种是元数据信息,采用基于Netty的command方式来同步消息;另一种是commitLog信息,同步方式是直接基于JavaNIO来实现。
-
同步属性信息
-
同步消息体
-
sync_ master 和async_master
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
分享
1、算法大厂——字节跳动面试题
2、2000页互联网Java面试题大全
3、高阶必备,算法学习
项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-Uhcpy6Qj-1711197156916)]
分享
1、算法大厂——字节跳动面试题
[外链图片转存中…(img-A6aKCJVb-1711197156916)]
2、2000页互联网Java面试题大全
[外链图片转存中…(img-RrsWgQOq-1711197156917)]
3、高阶必备,算法学习
[外链图片转存中…(img-7iXX7FM4-1711197156917)]