RocketMQ系列3:核心技术介绍
1 介绍
RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题、队列、消息、生产者、消费者、消费者分组以及订阅关系。以下是对这些核心技术的详细说明:
2 核心技术实现
2.1 主题(Topic)
1. 定义:主题是RocketMQ中消息传输和存储的顶层容器,用于标识同一类型业务逻辑的消息。它是一个逻辑概念,并非实际的消息容器。
2. 作用:
- 数据分类隔离:RocketMQ建议将不同业务类型的数据拆分到不同的主题中,以实现隔离存储和订阅。
- 数据身份和权限管理:RocketMQ中的消息本身是匿名无身份的,同一分类的消息使用相同的主题来做身份识别和权限管理。
3. 名称:主题名称用于标识主题,且在集群内部全局唯一。
4. 队列列表:作为主题的组成单元,是消息存储的实际容器,一个主题内包含一个或多个队列,消息实际存储在主题的各队列内。
4. 消息类型:在创建主题时,可以指定主题中存放的消息类型,包括Normal(普通消息)、FIFO(顺序消息)、Delay(定时/延迟消息)、Transaction(事务消息)。

2.2 队列(MessageQueue)
1. 定义:队列是RocketMQ中消息传输和存储的实际容器,也是RocketMQ消息的最小存储单元。
2. 特点:
- RocketMQ中所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。
- 队列天然具备顺序性,即消息按照进入队列的顺序写入存储,同一队列间的消息天然存在顺序关系。
- 消息在队列中的位置和消息之间的顺序通过位点(Offset)进行标记管理。

2.3 消息(Message)
1. 定义:消息是RocketMQ中最小的数据传输单元,生产者将需要发送的数据包装成消息发送给RocketMQ的服务端。
2. 特点:
- 不可变性:消息一旦产生,其内容即不可改变
- 持久化:RocketMQ默认会对消息进行持久化,保存到服务端的存储文件中,以保证消息的可回溯性和系统故障场景下的可恢复性。

2.4 生产者(Producer)
1. 定义:生产者负责将消息发送到RocketMQ的指定主题和队列中。
2. 发送方式:
- 同步发送:有返回值,必须等待消息发送成功才会结束。
- 异步发送:在发送消息后立即返回,同时异步接收传递过去的消息状态。
- 单向发送:单方面发送消息,不需要等待任何回应。

2.5 消费者(Consumer)
1. 定义:消费者负责从RocketMQ中订阅并消费指定主题的消息。
2. 消费过程:
- 消费者先从Broker拉取消息到客户端,然后启动消费线程消费这些消息。
- 消费者可以使用PullMessageService线程不断从Broker拉取消息,并使用ConsumeMessageService线程进行消费。

2.6 消费者分组(Consumer Group)
1. 定义:消费者分组是RocketMQ中用于管理消费者的一个概念,同一分组内的消费者共同分摊消息并进行消费。
2. 作用:
- 通过消费者分组,可以实现消息的负载均衡和容错处理。
- RocketMQ要求同一个消费者分组下所有消费者的消费行为要保持一致。

2.7 订阅关系(Subscription)
1. 定义:订阅关系是指消费者分组与主题之间的关联关系,以及消费者订阅消息时的过滤规则。
2. 作用:
- 通过订阅关系,消费者可以指定要消费的主题和消息类型。
- RocketMQ通过订阅关系来实现消息的过滤和分发。

3 总结
综上所述,RocketMQ的核心技术涉及多个核心概念,这些概念相互协作,共同实现了RocketMQ的高性能、高可用性和高可扩展性。
RocketMQ系列3:核心技术介绍的更多相关文章
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights
[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights 既上一篇分享了中文字幕的摄像机介绍Cameras后,本篇分享一下第2个已完工的 ...
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras
[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之摄像机介绍Cameras 最近得到一些Unity官方视频教程,一看全是纯英文的讲解,没有任何字幕或者 ...
- WPF入门教程系列三——Application介绍(续)
接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...
- .NET 4 并行(多核)编程系列之一入门介绍
.NET 4 并行(多核)编程系列之一入门介绍 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下: 1. 并行编程和多线程编程的区别. ...
- Linux从用户层到内核层系列 - GNU系列之glibc介绍
题记:本系列文章的目的是抛开书本从源代码和使用的角度分析Linux内核和相关源代码,byhankswang和你一起玩转linux开发 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswa ...
- SQL Server编程系列(1):SMO介绍
原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...
- Solidity教程系列1 - 类型介绍
现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下,再加上代码事例讲解. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果 ...
- 智能合约语言 Solidity 教程系列5 - 数组介绍
写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 本文前半部分是参考Solidity官方文档(当前最新版本: ...
- 【01】emmet系列之基础介绍
[01]emmet系列之基础介绍 [02]emmet系列之HTML语法 [03]emmet系列之CSS语法 [04]emmet系列之编辑器 [05]emmet系列之各种缩写 相关网址 官网:http: ...
- asp.net core系列 39 Razor 介绍与详细示例
原文:asp.net core系列 39 Razor 介绍与详细示例 一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor ...
随机推荐
- 一条 SQL 语句在 MySQL 中是如何执行的?
本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程,包括 SQL 的查询在 MySQL 内部会怎么流转,SQL 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构 ...
- CF708C Centroids [树形DP,换根DP]
Description 给定一棵树. 至多进行一次操作:删去一条边,连接一条新边,保证操作完后仍是树. 问每个点在进行操作后是否可以成为树的重心. Solution 性质\(1\):若一个点不是树的重 ...
- Android复习(三)清单文件中的元素——> activity
转自: https://developer.android.google.cn/guide/topics/manifest/activity-element <activity> 语法: ...
- Rigid Body Simulation
目录 0 前言 1 核心技术 1.1 Semi-implicit Euler 1.2 刚体模拟 1.3 Collision 2 实现 X Ref 0 前言 声明:此篇博客仅用于个人学习记录之用,并非是 ...
- 出现负载均衡问题IP端口不通的紧急处理
出现负载均衡IP不能用的处理方案,重启这个服务. 命令: systemctl stop keepalived systemctl start keepalived
- 全面解释人工智能LLM模型的真实工作原理(三)
前一篇:<全面解释人工智能LLM模型的真实工作原理(二)> 序言:前面两节中,我们介绍了大语言模型的设计图和实现了一个能够生成自然语言的神经网络.这正是现代先进人工智能语言模型的雏形.不过 ...
- chapter 3 introduction to computer science
主机文件: <chapter3.docx>
- 管理 Python 环境和依赖关系的工具 venv、virtualenv、pipenv 、poetry 、 miniforge 和 anaconda 的区别
管理 Python 环境和依赖关系的工具 venv.virtualenv.pipenv .poetry . miniforge 和 anaconda 的区别 venv.virtualenv.pipen ...
- 禁止http请求自动跳转到https--解决网站使用了HSTS的问题
前言 目前有些网站支持http和https两种协议访问,有些只支持一种协议访问.根据动态域名安全策略(HSTS),只要该域名在浏览器中访问过一次https,那么,谷歌浏览器会自动将http跳转到htt ...
- 推荐一个.NetCore开源的CMS项目,功能强大、扩展性强、支持插件的系统!
推荐一个基于.Net Core开发的开源CMS项目,该项目功能完善.涉及知识点比较多,不管是作为二次开发.还是学习都是不错的选择. 01 项目简介 Cofoundry是基于.Net开发的.代码优先开发 ...