消息队列选型(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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TSINGSEE青犀算法中台消防通道堵塞/占压AI检测算法的介绍及应用

消防通道是建筑物内用于紧急疏散的通道,其畅通无阻对于保障人员生命安全至关重要。然而,由于各种原因,消防通道经常会被杂物、车辆等堵塞,一旦发生火灾等紧急情况,后果不堪设想。为了有效解决这一问题,我们…

【氮化镓】GaN HEMT失效物理和可靠性

概述: 本文是一篇关于AlGaN/GaN基高电子迁移率晶体管(HEMTs)的失效物理和可靠性研究的综述文章,发表在2013年10月的《IEEE Transactions on Electron Devices》上。文章由Enrico Zanoni等人撰写,主要关注了影响栅极边缘和肖特基结的失效机制,并探讨了提高这些器件可靠性…

文档加密软件哪个好用?为什么迅软DSE加密软件更受用户青睐?

通过对文档内容进行加密处理,以确保其安全性和保密性。文档加密软件采用加密算法对文档进行加密处理,在加密过程中,文档加密软件会将文档的原始内容转换为一种不可读的形式,即加密后的文档。这个加密过程是通过应用特定的加密算法…

SQVI创建以及生成程序

SAP数据快速查询工具:Sqvi-QuickView 项目实施&运维阶段,为了快速获取一些透明表数据,一开始接触项目肯定会通过大量的数据表查找,然后线下通过EXCEL通过VLOOKUP进行数据关联,这种方式在关联数据较少的情况比较适应…

spring boot获取请求参数并响应

获取请求参数并响应: 响应: 在Controller类或方法上加上ResponseBody注解,可以将方法返回值直接响应,如果返回值是实体对象或者集合,将转换为json格式响应。如下例: RestControllerResponseBodyControll…

Linux最常用的40个基本命令

目录 Linux基本命令命令1:ls (查看指定目录中有哪些内容)ls / 相当于查看根目录中的内容,相当于查看我的电脑ls -l(小写l,或者使用ll)详细查看目录下所有内容ls /usr/lib(ls目录名称…

Java | Leetcode Java题解之第38题外观数列

题目: 题解: class Solution {public String countAndSay(int n) {String[] arr {"","1","11","21","1211","111221","312211","13112221","1113213211",…

基于springboot的网上二手商城的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

盛情邀请 | 4月24-26日成都工博会科东软件邀您共赴蓉城

2024成都国际工业博览会(简称“成都工博会”)将于2024年4月24日-26日在中国西部国际博览城隆重揭幕。立足未来工业的高站位,精确聚焦中国智能制造,为上下游企业搭建高效的供需对接桥梁,促进制造业向数字化网络化智能化转型,推动西…

CTF竞赛:一场网络安全技术的盛宴

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

若依框架后台管理系统_修改后台管理密码

若依框架后台管理系统_修改后台管理密码 1. 找见加密函数: /*** 生成BCryptPasswordEncoder密码** param password 密码* return 加密字符串*/public static String encryptPassword(String password){BCryptPasswordEncoder passwordEncoder new BCryptPasswordE…

深入探索生产者拦截器的使用以及源码设计

文章目录 一、介绍二、使用1. ProducerInterceptor接口2. 实现之统计3. 实现之二次处理4. 小结 三、实现原理1. 初始化流程2. 生效流程 四、总结 一、介绍 在软件设计中,为了方便能够应对不同的场景,一般在一些容易有差异的环节会考虑允许用户自定义逻辑…

相机1:如何系相机肩带

开始解锁新领域,多看几个相关视频,大概也就可以掌握一两种系相机肩带的方法,本质就是新知识的学习过程,不可能等着或者期待出来一个完整的教程,一步一步自己去探索,自己去查资料。 目录 总述 第一步&#…

仓库管理系统 warehouse

系统概要 仓库管理系统总共分为两个大的模块,分别是系统模块和业务模块。其中系统模块和业务模块底下又有其子模块。 功能模块 一、业务模块 1、客户管理 客户列表 客户分页和模糊查询 客户添加、修改、删除、批量删除 2、供应商管理 供应商列表 供应商分页和模糊查…

XiaodiSec day017 Learn Note 小迪渗透学习笔记

XiaodiSec day017 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 day 17 主要内容: php 框架 thinkPHPyiilaravel 使用 fofa 搜索 thinkphp 市面上 thinkphp5 版本较多 url 结构 域名/.php(文件名)/index(目录)/index(函数名)模块名-控…

Pyjion:一个解决Python性能瓶颈的利器!

在Python编程领域,性能一直是一个备受关注的话题。随着项目规模的增长和需求的提升,对代码性能的要求也越来越高。 为了解决这一问题,Python社区不断努力优化解释器和引入新的工具来提升代码执行效率。 其中,Pyjion模块作为一个…

Redis key(BigKey、MoreKey)的存储策略

1. MoreKey 案例 1.1 大批量往 redis 里面 插入2000w 测试数据key (1) Linux Bash 下面执行&#xff0c;插入 100w rootspray:~# for((i1;i<100*10000;i)); do echo "set k$i v$i" >> /tmp/redisTest.txt; done; 查看 rootspray:~# more /tmp/redisTest.…

SpringBoot多数据源(五)

SpringBoot多数据源-集成多个mybatis框架 1.基本框架2.使用2.1项目结构2.2 依赖导入2.3 application.yml配置2.4 创建读与写的SqlSessionFactoryBean 3.总结 1.基本框架 通过启动多个SqlSessionFactoryBean&#xff0c;每个SqlSessionFactoryBean对应一个datasource和指定位置的…

【计算机毕业设计】点餐平台网站——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

吴恩达2022机器学习专项课程(一) 6.1 动机第三周课后实验:Lab1使用逻辑回归进行分类

问题预览/关键词 回归和分类的区别&#xff1f;逻辑回归的作用是&#xff1f;什么是二分类问题&#xff1f;二分类问题案例如何表达二分类的结果&#xff1f;逻辑回归通常用哪种表达形式&#xff1f;什么是正样本和负样本&#xff1f;什么是阈值&#xff1f;可视化线性回归解决…