科普rabbitmq,rocketmq,kafka三者的架构比较
对比
架构对比
从架构可以看出三者有些类似,但是在细节上有很多不同。下面我们就从它们的各个组件,介绍它们:
RabbitMQ,是一种开源的消息队列中间件。下面是RabbitMQ中与其相关的几个概念:
1.生产者(Producer):生产者是消息的发送者,将消息发送到RabbitMQ的消息队列中。
2.消费者(Consumer):消费者是消息的接收者,从RabbitMQ的消息队列中获取消息并进行处理。
3.消息队列(Message Queue):消息队列是RabbitMQ的核心组件,用于存储待处理的消息。生产者将消息发送到队列中,消费者从队列中获取消息进行处理。
4.交换机(Exchange):交换机负责接收生产者发送的消息,并根据一定的规则将消息路由到一个或多个消息队列中。常见的交换机类型包括直连交换机(direct exchange)、主题交换机(topic exchange)、扇形交换机(fanout exchange)等。
5.绑定(Binding):绑定是指将交换机和消息队列进行关联,定义了交换机将消息路由到哪些队列中。绑定通常使用规则(routing key)来匹配消息和队列。
6.路由键(Routing Key):路由键是生产者在将消息发送给交换机时附带的关键字,用于指定消息的路由规则。
RocketMQ 是阿里巴巴开源的分布式消息中间件,下面是 RocketMQ 中与其相关的一些概念:
1.生产者(Producer):生产者负责生成并发送消息到 RocketMQ 中。
2.消费者(Consumer):消费者从 RocketMQ 中订阅并消费消息。
3.主题(Topic):主题是消息的逻辑分类,每个消息都属于一个特定的主题。生产者将消息发送到指定的主题,消费者通过订阅主题来接收相关的消息。
4.消息队列(Message Queue):主题被拆分成多个消息队列,每个消息队列按照顺序存储消息。消费者从消息队列中拉取消息进行消费。
5.消费者组(Consumer Group):消费者组是一组具有相同 Group ID 的消费者实例。每个消息只会被消费者组中的其中一个消费者实例消费,实现负载均衡和高可用性。
6.Broker:Broker 是 RocketMQ 的核心组件,它负责接收、存储和转发消息。一个 RocketMQ 系统通常由多个 Broker 组成,每个 Broker 负责管理若干个消息队列。每个消息队列只属于一个 Broker,但一个 Broker 可以管理多个消息队列。
7.Name Server:Name Server 是 RocketMQ 的命名服务组件,用于管理整个 RocketMQ 系统的元数据信息。生产者和消费者通过 Name Server 定位到对应的 Broker 服务器。Name Server 还负责管理主题、消费者组、路由信息等。
Kafka 是由 Apache 软件基金会开源的分布式流处理平台,其核心组件包括以下几个:
1.Broker:Kafka 的核心组件之一,负责存储和处理数据。一个 Kafka 系统通常由多个 Broker 组成,每个 Broker 负责管理一部分数据副本。
2.Topic:Topic 是指数据的类别或主题,每条消息都属于一个特定的主题。生产者将消息发送到指定的主题,消费者通过订阅主题来接收相关的消息。
3.Partition:Partition 是将一个 Topic 分割成多个较小的、有序的数据单元。每个 Partition 存储了 Topic 对应的部分消息数据。分区的好处是可以提高并发处理能力和扩展性。
4.生产者(Producer):生产者负责生成并发送消息到 Kafka 的 Broker。Producer 可以选择将消息发送到指定的 Topic 和 Partition。
5.消费者(Consumer):消费者从 Kafka 的 Broker 订阅并消费消息。可以通过消费者组的方式对消息进行分组,每个消费者组中的消费者共同消费一个 Topic。
6.消费者组(Consumer Group):消费者组是一组具有相同 Group ID 的消费者实例。每个消息只会被消费者组中的其中一个消费者实例消费,实现负载均衡和高可用性。
7.ZooKeeper:Kafka 使用 ZooKeeper 来进行集群管理、元数据存储和领导者选举等操作。ZooKeeper 负责协调 Broker 和其他组件之间的通信。
不同:
在发送消息和拉取消息方面,Kafka、RocketMQ 和 RabbitMQ 有一些区别。
1.RabbitMQ:
发送消息:RabbitMQ 中的生产者(Producer)将消息发送到指定的 Exchange。生产者发送消息时可以指定消息的 Routing Key,Exchange 根据 Routing Key 将消息路由到相应的队列。
拉取消息:RabbitMQ 中的消费者(Consumer)通过订阅队列来拉取消息。消费者可以按照默认顺序或自定义顺序消费队列中的消息。消费者可以选择轮询方式拉取消息,也可以使用 Basic.Consume RPC 方法主动拉取消息。
2.RocketMQ:
发送消息:RocketMQ 的生产者(Producer)将消息发送到指定的 Topic,并不能直接选择要发送到的队列,而是由 Broker 负责将消息分发到相应的队列中。发送消息时可以选择同步或异步方式。
拉取消息:RocketMQ 的消费者(Consumer)通过订阅 Topic 和指定消费者组(Consumer Group)来拉取消息。RocketMQ 提供了两种消费模式:集群模式(负载均衡消费)和广播模式(每个消费者都会收到全部消息)。消费者可以按照默认顺序拉取消息或指定顺序拉取消息。
3.Kafka:
发送消息:Kafka 中的生产者(Producer)将消息发送到指定的 Topic,并选择要发送到的 Partition。生产者可以异步发送消息,不必等待消息被写入磁盘。
拉取消息:Kafka 中的消费者(Consumer)通过订阅 Topic 来拉取消息。消费者可以自主控制从哪个 Offset(偏移量)开始拉取消息,并可以按照自己的速度消费消息。Kafka 提供了高性能的批量拉取机制,可以一次性拉取多条消息。
前二者可以实现延迟队列,死信队列,而kafka不行。
相关文章:
科普rabbitmq,rocketmq,kafka三者的架构比较
对比 架构对比 从架构可以看出三者有些类似,但是在细节上有很多不同。下面我们就从它们的各个组件,介绍它们: RabbitMQ,是一种开源的消息队列中间件。下面是RabbitMQ中与其相关的几个概念: 1.生产者(P…...
加密货币交易技巧——地利(二)
EMA指标 针对资金体量大的代币,做现货交易或低倍合约,可参考以下指标: 1.指标介绍:EMA,移动平均线指标,这里只分享中长线用法,非常实用且准确率超高 2.适用群体:适用于现货或低倍…...
服务网关Gateway_微服务中的应用
没有服务网关 问题: 地址太多安全性管理问题 为什么要使用服务网关 网关是微服务架构中不可或缺的部分。使用网关后,客户端和微服务之间的网络结构如下。 注意: 网关统一向外部系统(如访问者、服务)提供REST API。在Sp…...
2G大小的GPU对深度学习的加速效果如何?
训练数据情况 总共42776张224*224*3张图片 Found 42776 files belonging to 9 classes. Using 12833 files for training. 模型参数情况 Total params: 10,917,385 Trainable params: 10,860,745 Non-trainable params: 56,640 batch-size:12 GPU信息 NVIDIA GeForce GT 7…...
intel 一些偏门汇编指令总结
intel 汇编手册下载链接:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html LDS指令: 手册中可以找到 位于 3-588 根据手册内容猜测:lds r16 m16:16 的作用,是把位于 [m16:16] 内存地址的数…...
python 多个proto文件import引用时出现ModuleNotFoundError错误
问题描述 my_proto文件夹里有两个proto文件,book.proto想要引用person.proto文件中的Person,如下 book.proto syntax "proto2";import "person.proto"; // 导入person.proto文件message Book {optional string name 1;optional …...
C语言图书管理系统
一、 系统概述 图书管理系统是一个用C语言编写的软件系统,旨在帮助图书馆或图书机构管理其图书馆藏书和读者信息。该系统提供了一套完整的功能,包括图书录入、借阅管理、归还管理、读者管理、图书查询、统计报表等。 二、 系统功能 2.1 图书录入 管理…...
归并排序及其非递归实现
个人主页:Lei宝啊 愿所有美好如期而遇 目录 归并排序递归实现 归并排序非递归实现 归并排序递归实现 图示: 代码: 先分再归并,像是后序一般。 //归并排序 void MergeSort(int* arr, int left, int right) {int* temp (int…...
【kubernetes】kubernetes中的Controller
1 什么是Controller? kubernetes采用了声明式API,与声明式API相对应的是命令式API: 声明式API:用户只需要告诉期望达到的结果,系统自动去完成用户的期望命令式API:用户需要关注过程,通过命令一…...
RabbitMQ-死信队列
接上文 RabbitMQ-java使用消息队列 1 死信队列简介 死信队列模式实际上本质是一个死信交换机绑定的死信队列,当正常队列的消息被判定为死信时,会被发送到对应的死信交换机,然后再通过交换机发送到死信队列中,死信队列也有对应的消…...
ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合
目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 …...
什么是数学建模(mooc笔记)
什么是数学建模 前提:我们数学建模国赛计划选择C题,故希望老师的教学中侧重与C题相关性大的模型及其思想进行培训。之后的学习内容中希望涉及以下知识点: logistic回归相关知识点。如:用法、适用、限制范围等。精学数学建模中常…...
基于SpringBoot的流浪动物管理系
基于SpringBoot的流浪动物管理系的设计与实现,前后端分离 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 首页 后台登陆界面 管理员界面 摘要 基于Spring Boot的…...
fcpx插件:82种复古电影胶卷框架和效果mFilm Matte
无论您是在制作音乐剪辑、私人假期视频还是大型广告活动,这个专业的插件都将帮助您为您的镜头赋予真正的电影角色。 复古效果在任何视频中都能立即识别出来,增添了感伤的复古氛围,并使镜头更具说服力。使用 mFilm Matte 轻松实现这些特征&…...
【LeetCode热题100】--98.验证二叉搜索树
98.验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 由于二…...
wxpython:wx.grid 表格显示 Excel xlsx文件
pip install xlrd xlrd-1.2.0-py2.py3-none-any.whl (103 kB) 摘要: Library for developers to extract data from Microsoft Excel (tm) spreadsheet files pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.…...
事件循环机制
eventLoop 事件循环(Event Loop)是用于管理和调度异步任务执行的一种机制,通常在浏览器中,也在其他 JavaScript 运行环境中存在。事件循环确保 JavaScript 单线程的执行模型下能够处理非阻塞的异步任务,以避免程序阻塞…...
苹果曾考虑基于定位控制AirPods Pro自适应音频
在一次最近的采访中,苹果公司的高管Ron Huang和Eric Treski透露,他们在开发AirPods Pro自适应音频功能时,曾考虑使用GPS信号来控制音频级别。这个有趣的细节打破了我们对AirPods Pro的固有认知,让我们对苹果的创新思维有了更深的…...
【代码阅读笔记】yolov5 rknn模型部署
一、main函数思路 二、值得学习的地方 1、关注yolov5检测流程 2、其中几个重要的结构体 typedef struct {int left;int right;int top;int bottom; } YOLOV5_BOX_RECT; // box坐标信息typedef struct {char name[YOLOV5_NAME_MAX_SIZE];int class_index;YOLOV5_BOX_RECT box…...
【多线程】进程与线程 并发编程 面试题总结
进程和线程 进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基…...
C++算法 —— 动态规划(10)二维费用背包
文章目录 1、动规思路简介2、一和零3、盈利计划 背包问题需要读者先明白动态规划是什么,理解动规的思路,并不能给刚接触动规的人学习。所以最好是看了之前的动规博客,以及两个背包博客,或者你本人就已经懂得动规了。 1、动规思路简…...
MySQL数据库正在耗用大量CPU的问题排查
这是一篇实战性的文章,如何处理正在发生的MYSQL服务器CPU飙升的问题,一般情况下,MySQL是不会耗用这么高的CPU的,要么是不走索引的查询,要么是同一时间出现了大量比较耗用资源的查询,不管出现的是哪一种情况…...
php替换字符串里的a变为b
$tempstrstr_replace("\\","/",$tempstr); //把$tempstr中的a替换成b $tempstrstr_replace("a","b",$tempstr);...
黑豹程序员-架构师学习路线图-百科:CSS-网页三剑客
文章目录 1、为什么需要CSS2、发展历史3、什么是CSS4、什么是SASS、SCSS 1、为什么需要CSS 作为网页三剑客的第二,CSS为何需要它,非常简单HTML只能完成页面的展现,但其做出来的页面奇丑无比。 随着网络的普及,人们的要求更高&…...
NUWA论文阅读
论文链接:NUWA: Visual Synthesis Pre-training for Neural visUal World creAtion 文章目录 摘要引言相关工作视觉自回归模型视觉稀疏自注意 方法3D数据表征3D Nearby Self-Attention3D编码器-解码器训练目标 实验实现细节与SOTA比较T2I微调T2V微调V2V微调Sketch-t…...
4.Tensors For Beginners-Vector Definition
在上一节,已经了解了前向和后向转换。 什么是向量? 定义1:向量是一个数字列表 这很简洁,也通俗易懂。 现有两个向量: 如果要把这两个向量给加起来,只需把对应位置的元素(组件)给加起来。 而要缩放向量&…...
vertx学习总结5
这章我们讲回调,英文名:Beyond callbacks 一、章节覆盖: 回调函数及其限制,如网关/边缘服务示例所示 未来和承诺——链接异步操作的简单模型 响应式扩展——一个更强大的模型,特别适合组合异步事件流 Kotlin协程——…...
Go,从命名开始!Go的关键字和标识符全列表手册和代码示例!
目录 一、Go的关键字列表和分类介绍关键字在Go中的定位语言的基石简洁与高效可扩展性和灵活性 关键字分类声明各种代码元素组合类型的字面表示基本流程控制语法协程和延迟函数调用 二、Go的关键字全代码示例关键字全代码示例 三、Go的标识符定义基础定义特殊规定关键字与标识符…...
【网络】网络扫盲篇 ——用简单语言和图解带你入门网络
网络的一些名词和基础知识讲解 前言正式开始一些基础知识发展背景运营商和生产商 协议协议的分层TCP/IP五层(或四层)模型(可以不看,对新手来说太痛苦了,我这里只是为了让屏幕前的你过一遍就好,里面很多概念新手是不太懂的…...
【项目开发 | C语言项目 | C语言薪资管理系统】
本项目是一个简单的薪资管理系统,旨在为用户提供方便的员工薪资管理功能,如添加、查询、修改、删除员工薪资信息等。系统通过命令行交互界面与用户进行交互,并使用 txt 文件存储员工数据。 一,开发环境需求 操作系统:w…...
网站做的优化 怎么排名靠后了/nba排名2021最新排名
Pig...
wordpress插件的用法/百度发视频步骤
父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信;使用步骤:定义组件:现有自定义组件com-a、com-b,com-a是com-b的父组件;准备获取数据:com-b要获取父组件data中的name属性&#x…...
网站优化合同/南宁网站建设服务公司
在游戏中,我们都喜欢加一些描边效果,来凸显人物的边缘,提高识别度。美术一般都喜欢加。描边方式一般有两种,一种的模型边缘描边,一种的人物的转折点描边(这种需要用到卷轴) 在游戏中比较常用的…...
模板网站建设公司电话/网站建设需要多少钱
前言:最近因项目需求,需要打包linux-qt程序给客户先用一下子。百度一大堆终于找了几个靠谱的来综合一下,留为备用吧。由于是先遣版所以仅制作为免安装程序的格式。正文:博主的qt是5.9.2的,程序名称为ocs,下…...
樟木头的建网站公司/开网站怎么开
一、什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 二、Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值…...
linux玩wordpress/在线域名查询网站
简单理解: 私有云是自己的房子,有钥匙的人可以进。 公有云是酒店,谁花钱给谁房卡,时间到了就退房。 公有云: 第三方提供商用户能够使用的云,一般可以通过网络连接服务器使用,成本比较低…...