RocketMQ基本知识

RocketMQ是一款由阿里设计的分布式消息中间件,以其严格的消息顺序、亿级堆积能力和分布式特性著称。支持Pul和Push消费模式,且在双十一中经受住了考验。本文介绍了其高可靠、高并发、低延迟的特点,以及重复消费和顺序消费的解决方案。此外,还详细讲解了NameServer、Broker、Producer、Consumer等组件的角色以及集群部署的各种模式,包括单Master、多Master、同步双写和异步复制等策略及其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述
1、阿里设计的分布式、队列模型的消息中间件
特点:
(1)支持严格的消息顺序;
(2)支持topic与Queue两种模式;
(3)亿级消息堆积能力;
(4)友好的分布式特性;
(5)同时支持Pul和Push方式消费;
(6)历经多次双十一考验;
(7)纯java编写,基于通信框架Netty;
2、高可靠、高并发、低延迟

二、消息消费
1、重复消费:
幂等处理,解决重复消费
2、顺序消费:RocketMQ本身支持顺序消费
原理
(1)将消息投递到同一个队列中,在队列内部RocketMQ保证先进先出。
(2)同1个队列会被投递到同1个消费者实例,再由消费者拉取数据进行消费
(3)消费者内部维护本地队列锁,保证只有1个线程进行消费

三、RocketMQ组件和集群部署结构
在这里插入图片描述
1、NameServer 名称服务器(类似于Zookeeper)
(1)保存Broker相关元信息,并给生产者消费者查找Broker信息;
(2)无状态、可横向扩展,集群部署;
(3)每个Broker在启动时到NameServer 中注册,
(4)生产者发送消息前根据topic到NameServer 中获取Broker的路由消息
(5)消费者也定时获取topic的路由信息

2、Broker 消息服务器
(1)Broker 功能:
消息存储中心,接收生产者消息并存储,消费者从此处拉取消息
存储与消息相关的元数据:用户组、消费进度偏移量、队列等
Broker有Master和Slave2种类型:Master可写可读,Slave只读不写
集群部署:单Master、多Master、多Master多Slave(同步双写)、多Master多Slave(异步赋值)
(2)集群部署详解:
单Master
一旦Master宕机或重启,服务不可用。
多Master
所有Broker都是Master,配置简单,单个Master宕机或重启对服务无影响;
缺点:单台机器宕机期间,该机器上未被消费的消息在机器未启动该前无法消费。
多Master多Slave(同步双写):
每个Master都配一个Slave,有多对Master-Slave,主备都写成功了才返回成功;
优点:数据和服务都无单点问题,Master宕机时消息无延迟,服务和数据可用性高;
** 缺点**:相比于异步复制,性能略低,发送消息延迟略高。
多Master多Slave(异步复制):
每个Master都配一个Slave,消息采用异步复制方式,主备之间有毫秒级延迟;
优点:丢失的消息非常少,实时性不会收到影响,Master宕机可从Slave消费,中间的过程对用户程序透明,不需要人工干预,性能同多Master几乎一样;
缺点:Master宕机后,磁盘损坏的情况下丢失少量数据。

3、Producer 生产者
4、Consumer 消费者
5、Message 消息
Topic 主题:message的第一级类型
Tag 标签:message的第二级类型
Queue 队列: Topic被划分为1个或多个子主题。1个Topic下设置多个队列,发送消息时执行该消息的主题,RocketMQ会轮询该Topic下的所有对流消息发送出去。
Broker内部消息情况:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值