消息队列选型(RabbitMq、RocketMq、Kafaka)

news2024/11/17 13:42:16

文章目录

  • 前言
  • RabbitMq
    • 优点
    • 缺点
  • RocketMq
    • 优点
    • 缺点
  • Kafaka
    • 优点
    • 缺点
  • 总结

前言

当引入消息队列时,常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而,近年来,ActiveMQ的活跃度已经下降,很多公司已经不再使用这款消息队列中间件,因此在比较中不再涉及该产品。

RabbitMq

前些年使用最多的一定是RabbitMq了,直到现在被使用的频率还是很高的。
在这里插入图片描述

优点

1.可靠性高:提供强大的消息传递机制,支持消息确认、持久化等特性,确保消息可靠传递。

2.支持多种消息传递模式,如点对点、发布/订阅等,适应不同的场景需求。支持消息重试、死信队列等

3.提供了直观的管理界面,方便监控和管理队列、交换机、连接等信息。

缺点

1.吞吐量比较低,对于大型电商促销秒杀就无法胜任。

2.开发语言是erlang,懂得人不是很多,改造成本较高。

3.配置和使用相对复杂,需要理解其消息模型和特性,有一定学习曲线。

RocketMq

再说说RocketMq,近几年使用Mq中间件的香饽饽
在这里插入图片描述

优点

1、单机吞吐量十万级,可用性非常高,分布式架构;

2、经过参数优化配置,消息可以做到0丢失,RocketMQ 的所有消息都是持久化的,先写入系统 PAGECACHE,然后刷盘,可以保证内存与磁盘都有一份数据;

3、支持10亿级别的消息堆积,不会因为堆积导致性能下降;

4、源码是java,便于二次开发。

缺点

1、RocketMQ 的部署和配置相对复杂,需要理解其架构和各种配置参数,对于初学者有一定的学习曲线。

2、如果消息的消费速度远低于生产速度,可能会导致消息堆积,需要合理配置流量控制策略来避免系统故障。

Kafaka

kafka其实一般大数据相关的开发使用的比较多,很多时候kafka会用来做收集日志
在这里插入图片描述

优点

1.Kafka的最大优势是高吞吐量和低延迟,Kafka 能够处理大规模的消息并保持较低的延迟,适用于对消息处理速度有要求的场景。

2.Kafka 支持多种消息模型,包括发布/订阅、批量消费、流式处理等,适用于不同的业务场景。

  1. Kafka 提供了消息持久化机制,消息被写入磁盘并复制到多个节点,保证了消息的持久性和可靠性。

缺点

1.依赖ZooKeeper: Kafka 需要依赖 ZooKeeper 来进行节点管理和协调,增加了系统的复杂性和维护成本。

2.Kafka 的部署和配置相对复杂,需要理解其架构和各种配置参数,对于初学者有一定的学习曲线。

3.Kafka 保证了分区内消息的顺序性,但在分区间无法保证全局顺序,需要开发者自行处理消息的顺序性。

4.Kafka 将所有消息都持久化到磁盘上,可能会占用大量的硬盘资源,需要合理规划硬盘空间。

总结

其实如果一般来说你业务使用mq,对消息的安全性要求较高,选择RocketMq;

如果对于一些使用mq数据量比较大的场景,比如日志相关的,对消息的丢失要求不高的情况下,选择kafaka。

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

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

相关文章

DBeaver导入sql文件

DBeaver导入sql文件 下载数据库 数据库下载地址: https://www.begtut.com/mysql/mysql-sample-database.html数据库导入 获取sql文件中创建的数据库的名称,创建一个同名的数据库。 输入数据库的名称,设置字符集和排序规则 数据库创建完…

基于Springboot的人职匹配推荐系统

基于SpringbootVue的人职匹配推荐系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 企业信息 岗位信息 新闻资讯 后台管理 用户管理 企业信息管理 岗位信…

【Linux高性能服务器编程】——高性能服务器框架

hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之高性能服务器框架介绍,在这篇文章中,你将会学习到高效的创建自己的高性能服务器,并且我会给出源码进行剖析,以及手绘UML图来帮助大家来理解&…

LeetCode:组合求和III之回溯法

题目 题目链接 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。题目图解 ** ** cpp代码 class …

大模型改变了NLP的游戏规则了吗

NLP已经死了吗? 自从 ChatGPT 横空出世以来,自然语言处理(Natural Language Processing,NLP) 研究领域就出现了一种消极的声音,认为大模型技术导致 NLP “死了”。在某乎上就有一条热门问答,大…

03-为啥大模型LLM还没能完全替代你?

1 不具备记忆能力的 它是零状态的,我们平常在使用一些大模型产品,尤其在使用他们的API的时候,我们会发现那你和它对话,尤其是多轮对话的时候,经过一些轮次后,这些记忆就消失了,因为它也记不住那…

Python 开发实现登陆和注册模块

Python 开发实现登陆和注册模块 一、案例介绍 本例设计一个用户登录和注册模块,使用Tkinter框架构建界面,主要用到画布、文本框、按钮等组件。涉及知识点:Python Tkinter界面编程、pickle数据存储。本例实现了基本的用户登录和注册互动界面…

纹理合成在AI去衣技术中的关键作用

随着人工智能技术的飞速发展,图像处理和计算机视觉领域取得了显著的进步。其中,AI去衣技术作为图像处理的一个分支,近年来引起了广泛关注。在AI去衣技术中,纹理合成发挥着至关重要的作用,它不仅能够保证图像的真实性&a…

YOLO算法改进Backbone系列之MogaNet:

卷积神经网络(ConvNets)一直是计算机视觉的首选方法。受灵长类视觉系统的启发,卷积层可以对具有区域密集连接和平移等方差约束的观测图像的邻域相关性进行编码。通过交错分层,ConvNets获得了被动增加的感受野,并善于识…

掼蛋比赛中的违规及处罚

一、越序违规及处罚 1、越序抓牌:抢先抓其他选手应抓的牌。 (1)越序抓牌但并没有看到的,一经发现须马上退回。 (2)越序抓牌已经看到的但是没有插入手牌中的,除马上退回外,可由裁判员…

OpenHarmony实战开发-文件上传下载性能提升指导。

概述 在开发应用时,要实现高效的客户端跟服务器之间数据交换,文件传输的性能是至关重要的。一个数据交换性能较低的应用会导致其在加载过程中耗费较长时间,在很多的场景造成页面卡顿,极大的影响了用户体验。相反,一个…

【进程地址空间】地址空间理解存在原因 | 深入理解页表写时拷贝虚拟地址

目录 地址空间深入理解 划分区域 理解地址空间 地址空间存在的意义 意义1 意义2 意义3 理解页表和写时拷贝 页表 写时拷贝 OS识别错误 理解虚拟地址 fork解释 上篇我们简单的学习了进程地址空间/页表/物理地址/虚拟地址/写时拷贝等概念。本篇深入理解下。 地址空…

分数求和(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;double a 0, b 1, result1 2, sum 0;int i 0;//循环运算&#xff1b;for (i 1; i <…

人工智能大模型培训老师叶梓 探索知识库问答中的查询图生成:处理多跳复杂问题的新方法

在人工智能领域&#xff0c;基于知识库的问答&#xff08;KBQA&#xff09;技术正变得越来越重要。它使得机器能够理解自然语言问题&#xff0c;并从结构化的知识库中检索答案。然而&#xff0c;面对多跳复杂问题&#xff0c;传统的KBQA方法往往力不从心。近期&#xff0c;研究…

Threejs绘制传送带

接下来会做一个MES场景下的数字孪生&#xff0c;所以开始做车间相关的模型&#xff0c;不过还是尽量少用建模&#xff0c;纯代码实现&#xff0c;因为一方面可以动态使用&#xff0c;可以调节长度和宽度等&#xff0c; 下面这节就做一个简单的传送带&#xff0c;这是所有车间都…

C++心决之类和对象详解(中篇)(封装入门二阶)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 7.const成员 8.取地址及const取地址操作符重载 1.类的…

Win 进入桌面黑屏,只有鼠标

大家好&#xff0c;我叫秋意零。 今天&#xff0c;遇到一个同事电脑进入桌面黑屏&#xff0c;只有鼠标。经过询问沟通&#xff0c;说是 Windows 突然进行了自动更新&#xff0c;更新之后桌面就黑了屏。经过查询是一个桌面进程没启动才会导致桌面黑屏。首先分两种情况&#xff0…

【linux】软件工具安装 + vim 和 gcc 使用(上)

目录 1. linux 安装软件途径 2. rzsz 命令 3. vim 和 gcc 使用 a. vim的基本概念 b. 命令模式下的指令 c. 底行模式下的指令 1. linux 安装软件途径 源代码安装rpm安装 -- linux安装包yum安装&#xff08;最好&#xff0c;可以解决安装源&#xff0c;安装版本&#xff0…

ArrayList与顺序表(1)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x…

使用matplotlib的quiver绘制二维箭头图

使用ax.quiver绘制二维箭头图 1. matplotlib的quiver函数的调用方式 quiver函数是axes类的成员函数&#xff0c;其基本调用方式为&#xff1a; quiver([X, Y], U, V, [C], **kwargs) [X,Y]是箭头的位置&#xff0c;U,V是箭头的方向&#xff0c;C是箭头颜色。 具体而言&#x…