消息中间件比较

8ae341e56103437f861049940f58dce0.jpg那都有哪些中间件可供选择呢。其实现在主流的消息中间件就4种:kafka、ActiveMQ、RocketMQ、RabbitMQ

 

 

 

 

下面我们来看一下,他们之间有什么区别,他们分别应该用于什么场景

 

 

 

ActiveMQ

我们先看ActiveMQ。其实一般早些的项目需要引入消息中间件,都是使用的这个MQ,但是现在用的确实不多了,说白了就是有些过时了。我们去它的官网看一看,你会发现官网已经不活跃了,好久才会更新一次。

 

它的单机吞吐量是万级,一些小的项目已经够用了,但对于高并发的互联网项目完全不够看。

 

在高可用上,使用的主从架构的实现。

 

在消息可靠性上,有较低的概率会丢失数据。

 

综合以上,其实这个产品基本可以弃用掉了,我们完全可以使用RabbitMQ来代替它。

 

 

 

RabbitMQ

rabbitMQ出现后,国内大部分公司都从activeMQ切换到了rabbitMQ,基本代替了activeMQ的位置。它的社区还是很活跃的。

 

它的单机吞吐量也是万级,对于需要支持特别高的并发的情况,它是无法担当重任的。

 

在高可用上,它使用的是镜像集群模式,可以保证高可用。

 

在消息可靠性上,它是可以保证数据不丢失的,这也是它的一大优点。

 

同时它也支持一些消息中间件的高级功能,如:消息重试、死信队列等(后续文章会讲到)。

 

但是,它的开发语言是erlang,国内很少有人精通erlang,所以导致无法阅读源码。

 

对于大多数中小型公司,不需要面对技术上挑战的情况,使用它还是比较合适的。而对于一些BAT大型互联网公司,显然它就不合适了。

 

 

 

RocketMQ

接下来我们来讨论一下我比较喜欢的MQ-RocketMQ,它是阿里开源的消息中间件,久经沙场,非常靠谱。

 

它支持高吞吐量,能达到10万级,能承受互联网项目高并发的挑战。

 

在高可用上,它使用的是分布式架构,可以搭建大规模集群,性能很高。

 

在消息可靠性上,通过配置,可以保证数据的绝对不丢失,

 

同时它支持大量的高级功能,如:延迟消息、事务消息、消息回溯、死信队列等等(后续文章会单独讲解)。

 

它非常适合应用于java系统架构中,因为它使用java语言开发的,我们可以去阅读源码了解更深的底层原理。

 

目前来看,它没有什么特别的缺点,可以支持高并发下的技术挑战,可以基于它实现分布式事务,大型互联网公司和中小型公司都可以选择使用它来作为消息中间件使用,如果我来做技术选型,我首选的中间件就是它。

 

 

 

Kafka

kafka的吞吐量被公认为中间件中的翘楚,单机可以支持十几万的并发,相当强悍。

 

在高可用上同样支持分布式集群部署。

 

在消息可靠性上,如果保证异步的性能,可能会出现消息丢失的情况,因为它保存消息时是先存到磁盘缓冲区的,如果机器出现故障,缓冲区的数据是可能丢失的(后续文章会讲到)。

 

它的功能非常的单一,就是消息的接收与发送,因此不适合应用于许多场景。

 

它在行业内主要应用于大数据领域,使用它进行用户行为日志的采集和计算,来实现比如“猜你喜欢”的功能。

 

所以,如果没有大数据的需求,一般不会选择它。

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

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

相关文章

Java笔记草稿——已完成

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 推荐学习视频: 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 目录 零…

Unity_ET框架项目-斗地主_启动运行流程

unity_ET框架项目-斗地主_启动运行流程 项目源码地址: Viagi/LandlordsCore: ET斗地主Demohttps://github.com/Viagi/LandlordsCore下载项目到本地。 启动运行步骤: 下载目录如下: 1. VS(我用是2022版VisualStudio&#xff09…

快速上手linux | 一文秒懂Linux各种常用目录命令(上)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一 、命令提示符和命令的基本格式1.1 如何查看主机名称及修改 二、命令基本格式2.1 命令格式示例2.2 参数的作用…

C# WebSocket简单使用

文章目录 前言Fleck调试工具初始化简单使用 前言 最近接到了一个需求,需要网页实现上位机的功能。那就对数据传输的实时性要求很高。那就只能用WebSocket了。这里简单说一下我的WebSocket如何搭建 Fleck C# WebSocket(Fleck) 客户端:html Winfrom Fleck Github官网…

Kafka集成springboot

安装kafka,直接到官网下载bin文件,本文使用windows进行使用kafka。 下载之后,第一步,启动zookeeper: zookeeper-server-start.bat ..\..\config\zookeeper.properties 第二步,启动kafka: kafka…

对比SPI、UART、I2C通信的区别与应用

SPI、UART、I2C通信是常用的数字通信协议,它们在不同的场景下有不同的应用。下面,我将分别介绍它们的特点、区别与应用。 SPI通信 SPI通信是一种串行同步通信协议,它的全称为“Serial Peripheral Interface”。SPI通信是一种单主多从的通信方…

你都那么老了,还在每天写博客吗?

关注卢松松,会经常给你分享一些我的经验和观点。 白色便民网:我想多开一个公司会不会被税局查? 事件背景: 松松已创业9年,自媒体14年,经历过从0开公司、项目失败、赚钱等各种高光时刻。所以对于小微企业经营还是…

程序中关于时间和比较运算符的单词

时间 在日志中,我们经常碰到关于一些时间的单词缩写 比如这个Fri Dec 1 就代表了Friday (星期五), December (十二月) 12月1日星期五 或者使用date查看时间的时候 dateWed Dec 13 05:55:54 PM CST 2023这…

OfficeWeb365 SaveDraw 文件上传漏洞复现

0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 Sav…

Win10 安装.NET Framework 3.5 报错0x80240438

环境: Win10专业版 NET Framework 3.5 问题描述: Win10 安装.NET Framework 3.5 报错0x80240438 解决方案: 1.检查自动更新服务是否未开启,开启自动更新失败,用工具开启自动更新,重启电脑(未解决&am…

Proxmox创建Windows虚拟机

文章目录 下载ISO安装文件上传 下载ISO安装文件 下载地址:https://www.xitongzhijia.net/ 也可去官网进行下载 上传 将下载的ISO文件上传到Proxmox 选择ISO文件进行上传 上传后再ISO镜像中可以看到安装文件 点击创建虚拟机 填写名称,不能填写中文 镜…

团建策划信息展示服务预约小程序效果如何

团建是中大型企业商家每年举办的员工活动,其形式多样化、具备全部参与的娱乐性。但在实际策划流程及内容时,部分公司便会难以入手,术业有专攻,这个时候团建策划公司便会发挥效果。 如拓展训练、露营、运动会、体育竞技等往往更具…

[Linux] 基于LAMP架构安装论坛

一、安装Discuz论坛 1.1 创建数据库,并进行授权 mysql -u root -p123CREATE DATABASE bbs; #创建一个数据库GRANT all ON bbs.* TO bbsuser% IDENTIFIED BY admin123; #把bbs数据库里面所有表的权限授予给bbsuser,并设置密码admin123flush privileges; #刷新数据库…

Linux系统调试课:I2C tools调试工具

文章目录 一、如何使用I2C tools测试I2C外设1、I2C tools概述: 2、下载I2C tools源码:3、编译I2C tools源码: 4、i2cdetect 5、i2cget 6、i2cdump

docker基本管理和相关概念

docker是什么? docker是开源的应用容器引擎。基于go语言开发的。运行在Linux系统当中开源轻量级的“虚拟机”。 docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器。 docker的宿主机是Linux系统…

天池SQL训练营(四)-集合运算-表的加减法和join等

-天池龙珠计划SQL训练营 4.1表的加减法 4.1.1 什么是集合运算 集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。 在标准 SQL 中, 分别对检索结果使用 U…

Spring Cloud gateway - CircuitBreaker GatewayFilte

前面学习Spring cloud gateway的时候,做测试的过程中我们发现,Spring Cloud Gateway不需要做多少配置就可以使用Spring Cloud LoadBalance的功能,比如: spring:application:name: spring-gatewaycloud:gateway:routes:- id: path…

Python 自动化之修理PDF文件(二)

PDF文件_合并与拆分PDF文档Pro版本 文章目录 PDF文件_合并与拆分PDF文档Pro版本前言一、要做成什么样子二、主要用到的函数三、基本思路1.引入库2.创建用户输入模块3.确定主框架 四、文档合并代码模块1.用户输入和函数调用2.引导用户输入文档信息3.合并文档内容4.命名新文档生成…

玩转大数据13: 数据伦理与合规性探讨

1. 引言 随着科技的飞速发展,数据已经成为了现代社会的宝贵资产。然而,数据的收集、处理和利用也带来了一系列的伦理和合规性问题。数据伦理和合规性不仅关乎个人隐私和权益的保护,还涉及到企业的商业利益和社会责任。因此,数据…

RocketMQ-源码架构二

梳理一些比较完整,比较复杂的业务线 消息持久化设计 RocketMQ的持久化文件结构 消息持久化也就是将内存中的消息写入到本地磁盘的过程。而磁盘IO操作通常是一个很耗性能,很慢的操作,所以,对消息持久化机制的设计,是…