初识RocketMQ基础概念(一)
20年入职ryx公司后,刚好接触到一个线上问题,遂开了一个研究课题,一场针对Apache RocketMQ的无烟战争正式打开。
一开始刚接触这玩意,只是通过百度搜索简单了解下,后来发现很多文章复制粘贴严重。
于是就想自己看看源代码,前人摘树,后人乘凉。现在22年了,很多都又忘记了,待我慢慢补充。
先简单介绍一些基本概念
mq的使用场景:主要针对请求的削峰,解耦和异步处理。
mq的本质:
- 一种具备接受请求、保存数据、发送数据等功能的网络应用。
- 利用高效可靠的消息传递机制进行平台无关的数据交流; 并基于数据通信来进行分布式系统的集成;
- 通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 和一般网络应用程序区别于它主要负责数据的接收和传递,所以性能高于普通程序。
mq的核心组成:
- 协议:网络协议(OpenWire、AMQP、MQTT、kafka、OpenMeaasge等)
- 持久化机制:存入磁盘而非内存,不能随服务重启而丢失。
- 消息分发机制:消息服务器把消息分发给具体的某个消费者的策略。消息分发,重试。
- 高可用设计:针对服务可用性的设计。集群。
- 高可靠设计:指系统无障碍的持续允许。譬如:一个系统从不崩溃不报错,或者异常几率低
协议三要素:
- 语法:即数据与控制信息的结构或格式
- 语义:即需要发出何种控制信息,完成何种动作以及作出什么反应
- 时序(同步):即事件实现顺序的详细说明
常见的网络协议为:
- OpenWire:ActiveMQ专属
- AMQP:ActiveMQ,RabbitMQ(事务、持久化支持)
- MQTT:物联网应用广泛(轻量、结构简单、传输快、无事务持久化支持,低带宽,网络不稳定的场景)
- kafka:基于TCP的二进制协议,结构简单,无事务支持,有持久化设计
- OpenMeaasge:Apache RocketMQ实现,结构简单,解析快,事务支持,持久化设计
- Producer:消息生产者,负责产生消息
- Consumer :消息消费者,负责消费消息,一般由后台系统异步消费
- Push Consumer :封装消息拉取,消费进程和内部
- Pull Consumer :主动拉取消息
- Producer Group :一类Producer的集合名称,通常发送一类消息,发送逻辑一致
- Consumer Group :一类Consumer的集合名称,通常消费一类消息,消费逻辑一致
- Broker :消息中转角色,负责存储消息,转发消息,即Rocketmq Server
- Topic :消息主题,在服务端配置,消费者按照主题订阅消息
- Tag :消息分类,用于对消息进行过滤,在主题下对消息进行二次划分 同一业务的不同目的可以用同样的topic不同tag来区分
- Message :在生产者和消费者之间传输的消息体,一个message必须属于某个topic
- Namesrv :一个无状态的名称服务,可以集群部署,每个启动的broker都会去注册, 主要是处理注册和接收客户端的路由请求并返回路由信息
- OffSet :偏移量,消费者拉取消息时需要知道上次消费位点,即从哪开始消费
- Partition :分区,Topic的物理分组,一个Topic可以有多个分区,每个分区是一个有序队列。 分区里的每个消息都会分配一个有序ID,即偏移量
- Key :表示消息唯一,方便定位消息,查询问题
我:
不是圣人,做不到舍己为人;
不是痴人,做不到废寝忘食;
不是废人,做不到食不果腹;
不是庸人,做不到无所事事;
是个俗人,有七情六欲;
是个男人,有责任担当;
是个小人,有自己算盘;
是个大人,有自我奉献。
我:
一个在矛盾中不断进步的年轻人。
分类:
消息中间件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异