RocketMQ 是什么
| RocketMQ 是一款分布式、队列模型的消息中间件-能保证消息的顺序消费、消息拉取模式、高效的订阅者水平扩展能力、实时消息订阅机制、亿级消息堆积能力。具有高性能、高可靠、高实时、分布式特点。 | |
| 实时的消息订阅机制、亿级消息堆积能力、较少的依赖 | ![]() |
| 能够保证严格的消息顺序、提供丰富的消息拉取模式、高效的订阅者水平扩展能力 | |
| Producer、 Consumer、队列都可以分布式 | |
| Producer 向一些队列轮流发送消息,队列集合称为 Topic, Consumer 如果做广播消费,则一个 consumer实例消费这个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费这个 topic 对应的队列集合 | |
| 面试题: 消息消费概述 |
消息消费以组的模式开展,一个消费组内可以包含多个消费者,每一个消费者组可订阅多个主题,消费组之间有集群、广播两种消费模式。集群模式,主题下的同一条消息只允许被其中一个消费者消费。广播模式,主题下的同一条消息,将被集群内的所有消费者消费一次。消息服务器与消费者之间的消息传递也有两种模式:推模式、拉模式。所谓的拉模式,是消费端主动拉起拉消息请求,而推模式是消息达到消息服务器后,推送给消息消费者。RocketMQ消息推模式的实现基于拉模式,在拉模式上包装一层,一个拉取任务完成后开始下一个拉取任务。 |
| 消息拉取的过程 | ![]() |
| 消息服务端Broker组装消息 | ![]() |
| 消息拉取客户端处理消息 | ![]() |
| 面试题:集群模式下,多个消费者如何对消息队列进行负载呢? | 集群模式一个消息队列同一个时间只允许被一个消费者消费,一个消费者可以消费多个消息队列。 RocketMQ支持局部顺序消息消费,也就是保证同一个消息队列上的消息顺序消费。不支持消息全局顺序消费,如果要实现某一个主题的全局顺序消费,可以将该主题的队列数设置为1,牺牲高可用性。 |
| 消息发送-- 4步 消息验证 路由查找 选择队列 消息发送 |
![]() |
| RocketMq性能比较高的原因 | 1.通信层面:netty高效的NIO框架 2.RocketMQ 大量使用多线程、异步 3.采用零拷贝技术优化MMAP ( 中间节约一次拷贝,性能提高50%,磁盘--内核态内存--网卡驱动---网卡;省去了内核态到用户态拷贝) 4.采用文件存储,顺序读写 5.锁优化。(CAS 无锁化机制) 6.存储设计:读写分离 |
| RocketMQ 的 Netty 网络模型是「主从 Reactor 模型」在分布式消息中间件场景的落地实现:以 Netty 为底层 IO 框架,通过「线程隔离、自定义协议、长连接管理、零拷贝优化」,既发挥了 Netty 高并发的特性,又适配了消息收发的业务需求,最终支撑 RocketMQ 百万级 TPS 的通信能力。这也是主流中间件(如 Kafka、Elasticsearch)基于 Netty 构建网络层的通用思路。 | |
| 消息拉取长轮询机制分析 | RocketMQ未真正实现消息推模式,而是消费者主动向消息服务器拉取消息 |

本文详细介绍了RocketMQ的物理部署结构、网络部署特点、逻辑部署结构和存储特点,强调了其高可用性和高性能的原因,如零拷贝技术、多线程、异步处理等。还探讨了消息拉取的长轮询机制,并提供了多Master集群的环境搭建步骤,包括配置JDK、解压RocketMQ、修改配置文件和启动服务。





最低0.47元/天 解锁文章
2273

被折叠的 条评论
为什么被折叠?



