MQ横向对比:RocketMQ、Kafka、RabbitMQ、ActiveMQ、ZeroMQ

前言

本文将从多个角度全方位对比目前比较常用的几个MQ:

  • RocketMQ
  • Kafka
  • RabbitMQ
  • ActiveMQ
  • ZeroMQ将单独说明。

表格对比

特性RocketMQKafkaRabbitMQActiveMQ
单机吞吐量10 万级,支撑高吞吐10 几万级,吞吐量非常高,甚至有文献称,可以达到单机百万级TPS。万级,同ActiveMQ万级,相对其他MQ较低。
topic 数量对吞吐量的影响topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topictopic从几十到几百个时候,吞吐量会大幅度下降,所以请不要给Kafka设计过多的topic,需要更多的机器资源支撑大规模的 topictopic 数量增多,吞吐量会下降topic 数量增多,吞吐量会下降
时效性ms 级延迟在 ms 级以内微秒级,延迟最低RabbitMQ 的一大特点ms 级
可用性非常高,分布式架构非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用同 ActiveMQ高,基于主从架构实现高可用
消息可靠性经过参数优化配置,可以做到 0 丢失。支持事务同 RocketMQ。支持事务基本不丢有较低的概率丢失数据
消息顺序性分区内消息有序分区内消息有序队列的消息有序队列消息有序,topic不保证。
消息延时5.0开始支持,定时消息插件支持插件支持支持,Scheduled Message
功能支持MQ 功能较为完善,还是分布式的,扩展性好功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用基于 erlang 开发,并发能力很强,性能极好,延时很低MQ 领域的功能极其完备
资料文档少。没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述中,有kafka作者自己写的书,网上资料也有一些多。有一些不错的书,网上资料多多。没有专门写activemq的书,网上资料多
开发语言javaScala+JavaErlangjava
支持协议自定义自定义(基于TCP)AMQPOpenWire、STOMP、REST、XMPP、AMQP
消息存储磁盘。支持大量堆积内存、磁盘、数据库。支持大量堆积内存、磁盘。支持少量堆积
集群方式常用多对’Master-Slave’ 模式,开源版本需手动切换Slave变成Master天然的‘Leader-Slave’无状态集群,每台服务器既是Master也是Slave支持简单集群,'复制’模式,对高级集群模式支持不好支持简单集群模式,比如’主-备’,对高级集群模式支持不好
系统场景电商系统,金融系统,物流系统大数据处理平台(如 Hadoop、Spark) 流处理平台(如 Flink、Storm) 日志收集系统(如 ELK)网站通知系统 任务队列系统 微服务通信系统传统企业应用(如 ERP、CRM) JMS 兼容系统

ZeroMQ

ZeroMQ优缺点

ZeroMQ 的优点:

  • 轻量级和快速:ZeroMQ是一个轻量级的消息中间件,具有高性能和低延迟的特点,适用于需要快速消息传递的场景。
  • 灵活的消息模型:ZeroMQ支持多种消息传递模式,如请求-应答、发布-订阅、推送-接收等,可以根据不同需求选择合适的模式。
  • 无中心化架构:ZeroMQ没有中心服务器,消息传递是点对点的,这种无中心化的架构使得系统更具弹性和可伸缩性。
  • 多语言支持:ZeroMQ提供了多种语言的绑定,如C++, Python, Java等,可以方便地在不同语言的应用中集成ZeroMQ。
  • 多平台支持:ZeroMQ可以在多种操作系统上运行,包括Windows、Linux、MacOS等,使得跨平台开发变得更加容易。
  • 简单易用:ZeroMQ的API设计简洁明了,使用起来相对容易,可以快速上手并构建复杂的消息传递系统。
  • 开源和社区支持:ZeroMQ是开源项目,拥有活跃的社区支持,用户可以通过社区获得帮助、反馈和贡献。

ZeroMQ 的缺点:

  • 复杂性:ZeroMQ 的 API 相对复杂,需要一定的时间来学习和掌握。
  • 缺乏持久性:ZeroMQ 不提供消息持久化功能,一旦消息被消费就会丢失。
  • 不支持事务:ZeroMQ 不支持分布式事务,因此不适用于需要保证消息原子性、一致性、隔离性和持久性的场景。
  • 不支持高可用:ZeroMQ 本身不支持集群,需要使用第三方工具或库来实现。

ZeroMQ应用场景

  • 分布式系统:构建分布式系统,实现不同组件之间的通信和消息传递。
  • 实时数据处理:处理来自不同来源的实时数据,如传感器、日志和社交媒体流。
  • 游戏开发:实现多人游戏中的玩家通信和数据同步。
  • 金融交易系统:构建高吞吐量、低延迟的金融交易系统。
  • 物联网:连接和管理物联网设备,实现数据采集和控制。

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

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

相关文章

【数据结构】堆的创建

文章目录 一、堆的概念及结构1、什么是堆2、堆的性质3、堆的结构及分类 二、堆的创建1、堆向下调整算法2、堆向上调整算法3、堆的创建(向上调整算法) 一、堆的概念及结构 1、什么是堆 堆就是以二叉树的顺序存储方式来存储元素,同时又要满足父…

Java复习05 Spring 概念

Java复习05 Spring 概念 初学 Spring 的时候 我的问题是 什么是Spring? Spring的底层实现是什么?为什么现在Java都在用sping框架? 1.把Spring类比成乐高说明书 想象一下你有一个超级大的乐高积木盒子,里面有各种各样的积木。你…

智慧城市中的智慧生活:便捷、舒适与高效

目录 一、智慧城市中的智慧生活概述 二、智慧生活带来的便捷性 1、智慧交通的便捷出行 2、智慧购物的轻松体验 3、智慧政务的一站式服务 三、智慧生活带来的舒适性 1、智慧环境的绿色宜居 2、智慧医疗的健康保障 3、智慧教育的均衡发展 四、智慧生活带来的高效性 1、…

CSS案例-5.margin产品模块练习

效果1 相关数据 整体长:298px,高:415px 效果2 知识点 外边距margin 块级盒子水平居中 条件: 必须有宽度左右外边距设为auto 三种写法: margin-left:auto;margin-right:auto&…

高架学习笔记之信息安全基础

目录 一、信息安全基础 1.1. 概念 1.2. 信息存储安全 1.3. 网络安全 二、信息安全系统的组成框架 三、信息加解密技术和数字签名 四、访问控制技术 五、信息安全的保障体系与评估方法 5.1. 计算机信息系统安全保护等级 5.2. 安全风险管理 一、信息安全基础 1.1. 概念 …

linux安装WordPress问题汇总,老是提示无法连接到FTP服务器解决方案

最近在做一些建站相关的事情,遇到一些大大小小的问题都整理在这里 1.数据库密码和端口,千万要复杂一点,不要使用默认的3306端口 2.wordpress算是一个php应用吧,所以安装流程一般是 apache http/nginx——php——mysql——ftp &…

MQTT和Modbus的物联网网关协议区别分析

MQTT和Modbus的物联网网关协议区别分析 MQTT(Message Queuing Telemetry Transport)与Modbus是两种广泛应用在物联网环境中的通信协议,它们各自具有独特的优势和适用场景,下面将从多个维度对这两种网关协议进行详细区别分析。 首…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求,大概情况就是,视频文件是存储在笔记本电脑里面,然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式,后来发现不行,这样太局限了,需要先明确可能用到的教程&#xf…

docker+k8s相关面试题

dockerk8s k8s详细介绍docker的工作原理docker的组成docker与传统虚拟机的区别docker技术的三大核心概念centos镜像几个G,但是docker centos镜像才几百兆镜像的分层结构以及为什么要使用镜像的分层结构容器的copy-on-write特性,修改容器里面的内容会修改…

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年,主要目标是应对车辆的电子和电气(E/E)系统失效。该方法践行至今,有些系统功能安全方法已经成熟,例如电池管理系统(BMS),并且…

MATLAB中的cell数组和结构体

MATLAB中的Cell数组和结构体 MATLAB作为一种高级编程语言和数值计算环境,为用户提供了多种数据结构,以便更灵活、高效地处理数据。其中,cell数组和结构体是两种非常重要的数据结构,它们在MATLAB编程和数据管理中发挥着关键作用。…

Latex插入pdf图片,去除空白部分

目录 参考链接: 流程: 参考链接: ​科研锦囊之Latex-如何插入图片、表格、参考文献 http://t.csdnimg.cn/vpSJ3 流程: Latex的图片插入支持PDF文件,这里笔者建议都使用PDF文件进行图片的插入,因为PDF作…

基于spring boot实现接口管理平台

数据库结构 /* Navicat MySQL Data TransferSource Server : localhost_3306 Source Server Version : 50724 Source Host : localhost:3306 Source Database : interfaceTarget Server Type : MYSQL Target Server Version : 50724 File Encoding…

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

学习笔记Day8:GEO数据挖掘-基因表达芯片

GEO数据挖掘 数据库:GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型:基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因,一列为一个样本,内容是基因表达量。 热图 输入数据…

Java语言: JVM

1.1 内存管理 1.1.1 JVM内存区域 编号 名字 功能 备注 1 堆 主要用于存放新创建的对象 (所有对象都在这里分配内存) jdk1.8之后永久代被替换成为了元空间(Metaspace) 2 方法区(加、常、静、即) 被虚拟机加载的类信息(版本、字段、方法、接口…

Git——GitHub远端协作详解

目录 Git&GitHub1、将内容Push到GitHub上1.1、在GitHub上创建新项目1.2、upstream1.3、如果不想要相同的分支名称 2、Pull下载更新2.1、Fetch指令2.2、Fetch原理2.3、Pull指令2.4、PullRebase 3、为什么有时候推不上去3.1、问题复现3.2、解决方案一:先拉再推3.3…

孙溟㠭于北京大学北大书店现场创作

孙溟㠭于北京大学北大书店现场创作篆刻作品 孙溟㠭北大书店现场创作 孙溟㠭于北京大学北大书店展览期间现场创作 孙溟㠭北京大学篆刻展现场创作 图文/氿波

Nadaraya-Watson核回归

目录 基本原理 ​编辑 核函数的选择 带宽的选择 特点 应用 与注意力机制的关系 参考内容 在统计学中,核回归是一种估计随机变量的条件期望的非参数技术。目标是找到一对随机变量 X 和 Y 之间的非线性关系。 在任何非参数回归中,变量 Y 相对于变量…

tini启动进程的原理

文章目录 什么是tini简单用法 什么是tini tini 是一个小型的守护进程初始化系统,主要用于容器环境下作为 PID 为 1 的 init 进程。在 Linux 系统中,PID(进程标识符)为 1 的进程具有特殊的意义,它是系统的第一个进程&a…