RocketMQ的主要组件及其功能

news2025/1/12 12:19:10

一、RocketMQ部署的组件

RocketMQ是啥就不多说了,一个基于主题的订阅发布机制的消息中间。下面就是我们部署时的架构,NameServer和Broker需要部署在服务器上,对于消费者和生产者则是我们在自己的程序里启动,去push/pull消息。

消息生产者(Producer)发送到某一主题(Topic)的消息到消息服务器(Broker),Broker负责消息的持久化存储,消息消费者(Consumer)订阅需要用的Topic,Broker根据订阅信息把消息推送给消费者(推送模式)或者消费者主动向Broker拉取消息(拉模式),这样便实现了生产者和消费者之间的解耦。这也是我们使用消息中间件的一大原因之一。

二、组件说明

2.1 NameServer路由注册中心

RocketMQ摒弃了Zookeeper作为其注册中心,而是自己实现了一个NameServer来管理路由、服务注册和服务发现机制。NameServer的高可用性是通过部署多态NameServer组成集群,但集群中各NameServer批次之间互不通信。NameServer服务器之间在某一时刻的数据并不会完全相同,但对消息发送不会造成重大影响,无非就是短暂造成消息发送不均衡,所以NameServer集群中的数据一致性是采用了最终一致性。

2.2 Broker消息服务器

消息服务器,负责消息的持久化存储。从上图可见,其分为两种角色:Master和Slave。如上图的两主两从的架构。Master Broker负责读写功能,Slave Broker作为一个备份,当Master Broker存在压力时,可以从Slave Broker读取信息。所有的Broker(Master和Slave)每个30秒就向NameServer集群发送心跳包,主要包含的信息当前Broker上的Topic路由信息和自身Broker信息。

2.3 Client:Producer(消息生产者)和Consumer(消息消费者)

2.3.1 Producer

RocketMQ发送消息3种方式:同步、异步和单向

同步发送: 生产者向RocketMQ发送消息之后,同步等待,知道消息服务器(Broker)返回发送结果。

异步发送: 生产者向RocketMQ发送消息之后,指定消息发送成功后需要执行的回调函数,调用消息发送的API之后立即返回,生产者线程不阻塞,直至运行结束。消息发送成功或失败的回调任务在一个新的线程中执行。

单向发送: 生产者向RocketMQ发送消息之后,直接返回,不等待消息服务器(Broker)的返回结果,也不注册回调函数。也就是不管消息是否成功存储在消息服务器(Broker)和消息是否成功被消费。

2.3.2 Consumer

RocketMQ的消息消费以组的模式展开,一个消费组可以包含多个消费者,每个消费组可以订阅多个主题,消费组之间有集群模式和广播模式两种消费模式。

集群模式: 在当前主题下的同一条消息只允许被其中一个消费者消费。

广播模式: 在当前主题下的同一条消息将被集群内所有的消费者消费一次。

消息服务器(Broker)和消费者之间的消息传递方式有两种:拉模式和推模式。

拉模式: 是消费端发起请求,主动向消息服务器(Broker)拉取消息。

推模式: 消息到达消息服务器之后,推送给消费者。推模式基于拉模式实现,在拉模式上包装一层,一个拉取任务完成后开始下一个拉取任务。

消息拉模式主要是由客户端手动调用消息拉取API,而消息推模式是消息服务器主动将消息推送到消息消费端。关于消息队列的负载均衡机制遵循一个通用的思想:一个消息队列同一时间只允许被一个消费者消费,一个消费者可以消费多个消息队列。

RocketMQ支持局部顺序消费,也就是保证同一消息队列上的消息按顺序消费。不支持消息全局顺序消费,如果要实现某一个Topic的全局顺序消息消费,可以将该主题的队列数设置为1,这样便牺牲高可用性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rust变量与常量

变量绑定 在rust里有个核心原则,那就是所有权。在其它语言中,我们可以把一个值赋值给变量。但是在rust里,是把值绑定到变量上。任何内存对象都是有主人的,而且一般情况下完全属于它的主人,绑定就是把这块内存绑定给一…

路由器的工作原理,详细介绍

1、路由器的作用 路由器: router 作用:实现跨网段通信,不同的网络之间通信 交换机: switch 作用:组建局域网,就是将电脑通过网络连起来 交换机的原理参考文档:计算机网络之交换机的工作原理…

前端React项目的Next.js项目通过CSS引入自定义字体文件

最近在Web3的项目,需要引入自定义字体,做下记录: 1、 如果是下载的字体文件,直接能使用的就不需要转换,如果是TTF格式则需要转换成eot、svg、woff、woff2,这里提供一个网站Font Squirrel | Create Your Ow…

ROS之话题通信

文章目录理论模型分析流程1. 发布方2. 订阅方3.配置 CMakeLists.txt4.执行5.注意参考理论模型 话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色: ROS Master (管理者)Talker (发布者)Listener (订阅者) ROS Master 负责保管 Talker 和 Li…

简化javabean开发-->Lombok

目录 一.Lombok 1.Lombok 介绍 1.1Lombok 作用 1.2SpringBoot 和 IDEA 官方支持 2.Lombok 常用注解 3.Lombok 应用实例 3.1在 pom.xml 引入 lombok 3.2. 修改 Furn.java 3.3在 idea 安装 lombok 插件 一.Lombok 1.Lombok 介绍 1.1Lombok 作用 1. 简化 JavaBean 开…

Camtasia2023喀秋莎录屏软件下载操作教程

Camtasia软件2023最新版是一款电脑屏幕录制与视频剪辑的软件,功能强大且操作简单。可以使用该软件对视频进行添加滚动字幕的效果,并且还可以选择注释标注的样式、主题以及形状等。在内置的视频编辑器中对视频进行剪辑时还可以拖放文本、添加效果、添加过…

VTK-vtkImplicitFunction及其子类介绍

简介:本文主要介绍vtkImplicitFunction接口及其子类的实现原理和用途。 目录 1. vtkPlane 2. vtkPolyPlane 1. vtkPlane 描述:vtkPlane提供了各种平面的计算方法,包括点到面的投影,计算点到面的距离及面的法向量等。 Evaluat…

解析分布式数据库的技术框架及其在金融行业中的应用规划

早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如Oracel、DB2等)已足够应对。随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库无法满足业务系统越来越高的数据处理能力要求。于是,新型的分布式数据库系统应运而生。…

Linux安装Redis 手把手教程

文章目录安装步骤1. 创建安装目录/usr/local/redis2. 进入安装包目录3. 编译环境准备:4. 下载redis 源码包5. 解压文件6. 进入到解压好的redis-5.0.2目录下,进行编译与安装7. 启动并指定配置文件8. 配置允许远程连接(选做)9. 启动…

文献|敬畏这种情绪,居然可以让世界变得更美好

Hello,大家好~ 这里是壹脑云科研圈,我是青书~ 在介绍今天推荐的文献之前,要先和大家宣布一个非常棒的消息,我们的第二季21天情绪文献对赌营圆满结营啦~ 在本期活动里,各位参加的小伙伴都有属于自己的收获&#xff1…

容器基础镜像的编写及最佳实践

1 基本概念 1.1 Docker系统组成 整体Docker的系统包括以下主要组成部分,包括Dockerclient、Dockerdaemon、Docker registry、Docker镜像、Docker容器,他们之间的关系如下图: Docker架构主要分为客户端和服务端,客户端负责发起请求,服务端负责接受,解析和处理请求,图示中…

【Linux】操作题大全

目录 1.若下达 # rmdir test 命令来删除某个已存在的目录,但无法成功,请说明可能的原因 2.请用shell中的while循环输出1-100的和 两种执行bash文件的方法 3. 请用shell中的for循环输出1-100 4.请用shell中的while循环输出1-100 5.计算输入的参数1和参…

jquery中 offset()计算的偏移量 和 原生Dom计算的偏移量不一致;

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.需求:有一个表格,单元格宽度不相等,单元格上面覆盖着一个input输入框。想要通过相对位置计算 输入框到底在表格的第几列。 思路:通过循环表格第一行单元格计算左边偏移…

Twitter群推王:推特全方位营销利器

Twitter群推王是专为Twitter运营提供的一款全方位营销工具,可以自动发帖、自动私信、自动转发、自动关注、自动点赞、自动改资料、自动注册、数据采集等,解决营销中的三大难题:账号问题、同一Ip环境问题、批量自动化问题,是个人、…

【数据结构Note4】-串、数组和广义表(kmp算法详解)

串、数组和广义表 顺序表和链表分别是线性表的两种存储结构。 栈和队列是操作受限的线性表。 串、数组和广义表是内容受限的线性表。 1. 串 1.1 串的概念和结构 串(String)—零个或多个任意字符组成的有限序列 所谓串是内容受限的线性表。就是要求该线性…

[ 常用工具篇 ] 解决kali英文操作不方便的问题 -- kali 设置中文界面

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

iNFTnews|FTX一夜崩塌,但Web3仍前途光明

元宇宙的日子越来越不好过了。 FTX的暴雷仍在产生广泛的影响,以太坊的价格快跌到1000美元了,这与去年11月4900美元的历史新高形成鲜明对比。 不过,尽管市场低迷,创作者仍然在Web3领域找到了爱与支持,甚至是可持续发展…

正则表达式快速入门

目录1.正则表达式是什么,有什么作用2.定位符例子2.1想要搜索以“001”开头的文件2.2想要搜索以“ab”结尾的文件2.3搜索单词开头为“zh"的文件2.4搜索单词结尾为“zh"的文件2.5搜索单词中间为“zh"的文件3.限定符例子3.1 搜索以“0”开头&#xff0c…

【Call for papers】DSN-2023(CCF-B/软件工程/2022年12月7日截稿)

文章目录1.会议信息2.时间节点3.论文主题On behalf of the Organizing Committee, we extend you a warm welcome to the 53rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2023), organized by the University of Coimbra, Portugal.…

MyBatis-Plus 联表查询

文章目录前言引入依赖数据准备修改 Mapper查询分页查询前言 它的联表查询能力一直被大家所诟病。一旦遇到 left join 或 right join 的左右连接,你还是得老老实实的打开 xml 文件,手写上一大段的 sql 语句。 直到前几天,偶然碰到了这么一款…