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

文章目录

  • 前言
  • 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.mzph.cn/web/1794.shtml

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

相关文章

wangEditor集成Word导入(富文本编辑器)

wangEditor集成Word导入(富文本编辑器),wangEditor – 支持word上传的富文本编辑器,WANGEDITOR实现WORD图片自动转存,JAVA中将WORD转换为HTML导入到WANGEDITOR编辑器中(解决图片问题,样式,非常完美&#xf…

视频怎么做成二维码分享?微信扫码播放视频的操作技巧

随着互联网的快速发展,现在大家喜欢通过扫描二维码的方式来获取信息,比如现在通过扫码看视频就是很常见的一种方式。生成二维码的方式可以实现内容传递的简单化,而且可以有效的降低制作者的成本,提升用户的体验效果。 现在使用比…

【matlab 代码的python复现】 Matlab实现的滤波器设计实现与Python 的库函数相同实现Scipy

实现一个IIR滤波器的设计 背景 Matlab 设计的滤波器通常封装过于完整,虽然在DSP中能够实现更多功能的滤波器设计但是很难实现Python端口的实现。 我们以一段原始的生物电信号EEG信号进行处理。 EEG信号 1.信号获取 EEG信号通常通过头皮电极,经过多通道采样芯片采样,将获…

解决: 0x803f7001 在运行Microsoft Windows 非核心版本的计算机上,运行“ slui.exe 0x2a 0x803f7001 “以显示错误文本,激活win10步骤流程。

一. 解决 0x803F7001在运行Microsoft Windows非核心版本的计算机错误 首先,按下winR打开"运行",输入 regedit 后回车,打开注册表。   然后再注册表下输入地址HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProt…

代码随想录算法训练营DAY28|C++回溯算法Part.4|93.复原IP地址、78.子集、90.子集II

文章目录 93.复原IP地址思路确定非法的范围树形结构 伪代码 78.子集思路伪代码实现CPP代码 90.子集II思路CPP代码用used去重的办法用set去重的版本不使用used数组、set的版本 93.复原IP地址 力扣题目链接 文章讲解:93.复原IP地址 视频讲解:回溯算法如何分…

【免费题库】华为OD机试 - 火星文计算(Java JS Python C C++)

须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述输入描述输出描述用例解题思路:Java代码:JS代码:Python代码:C代码:C++代码:题目描述 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#…

Java 8 中 Stream 流的基础概念及特性介绍

1. 【Java 8 中 Stream 流的基础概念及特性介绍】 第一章:什么是Stream流 1.1 为什么引入Stream流 传统的集合操作需要通过循环或迭代器进行,代码冗长且不易维护Stream流提供了一种更简洁、更易读的方式处理集合数据引入Stream流可以实现更多的函数式…

docker容器技术篇:安装与配置flannel

Docker安装与配置flannel flannel是什么? Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址;通俗的将就是通过flannel接管dock…

KeyguardServiceDelegate解析

KeyguardServiceDelegate 是 KeyguardService的带了类, PowerManagerService 或者说客户端调用这个服务来通知 Keyguard各种事件。 如 setKeyguardEnabled onSystemReady onScreenTurnedOff onScreenTurningOn onScreenTurningOff onStartedWakingUp onFinishedWak…

粤嵌—2024/4/22—两数之和 || - 输入有序数组

代码实现: 双指针 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* twoSum(int *numbers, int numbersSize, int target, int *returnSize) {int *res malloc(sizeof(int) * 2);*returnSize 2;int i 0, j numbersSize - 1…

C++学习进阶版(二):与文件相关的函数用法

目录 1、读取文件的指定行 (1)main函数中直接读 (2)封装成函数 ① 无返回值类型 ② 直接返回读取的内容 2、求文件的行数 3、文件内容读取成一个字符串 1、读取文件的指定行 (1)main函数中直接读 …

如何选择全链路监控系统?CAT、SkyWalking、Pinpoint哪个更适合?

如果服务器上没有应用还会造成硬件瓶颈吗?显然是不会的,呈现出来的硬件瓶颈绝大多数是表象问题,我们往往需要在系统应用上寻找问题的根因。而寻找系统问题的根因,对于系统链路监控也是必不可少的, 前面我们也写了几篇…

光伏无人机吊装技术的优势及应用前景

近年来随着政府对光伏业务的不断宣传和推进,不少区域因地制宜引进了光伏发电项目,但是部分区域由于交通不便利,给材料运输工作带来了巨大的考验。目前,无人机吊装技术运输材料解决这一问题。 今天带大家看下光伏无人机吊装技术有…

STM32G030F6P6TR ST意法

STM32G030F6P6TR是ST(意法半导体)一款基于高性能ArmCortex-M032位RISC内核,工作频率高达64MHz的32位MCU微控制器。代理销售ST(意法半导体)全系列IC电子元器件-中芯巨能为您提供STM32G030F6P6TR(ST 32位MCU)引脚图及中文参数介绍等内容。 STM32G030F6P6TR的中文参数 …

Linux进程和任务管理

目录 一.程序和进程的关系 程序 进程 线程 线程与进程的区别 二.查看进程信息ps 方法一 常用选项 方法二 三.TOP动态查看进程信息 进程信息区各列解释 top常用命令 系统查看命令总结 查看进程信息pgrep 查看进程树pstree 四.控制进程 进程的启动方式 进程的前…

Java面试八股之重写一个对象的equals方法,需要考虑哪些问题

重写一个对象的equals方法,需要考虑哪些问题 遵守equals()约定: 重写equals()方法应遵循Object类中定义的equals()方法约定,即实现自反性(x.equals(x)始终为true)、对称性(若x.equals(y)为true&#xff0…

【电控笔记5.5】psms规格参数

规格参数 转矩常数Kt与反电动势常数Ke Kt:没安培电流产生多少转矩量 Ke或Kb:每单位转速产生的反电动势电压 反电动势是梯形波,Kt=Ke;正弦波则不相等 q轴电流与反电动势都领先转子磁通链90

谷粒商城学习笔记

1.系统架构 2.环境准备 21.安装Linux 1.VirtualBox: https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe 2.安装 Vagrant 1).Vagrant 下载地址: https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi https://www…

Python pandas数据转化

在Python中使用Pandas库进行数据处理时,数据转换是一项常见的任务。Pandas提供了多种方法来转换数据,包括重排、重塑、替换、分组等。以下是一些常用的数据转换方法: 1. 重排和重塑数据 pd.DataFrame.transpose():转置数据&…

7.Prism框架之对话框服务

文章目录 一. 目标二. 技能介绍① 什么是Dialog?② Prism中Dialog的实现方式③ Dialog使用案例一 (修改器)④ Dialog使用案例2(异常显示窗口) 一. 目标 1. 什么是Dialog?2. 传统的Dialog如何实现?3. Prism中Dialog实现方式4. 使用Dialog实现一个异常信息弹出框 二. 技能介…