消息中间件比较

news/2024/11/14 16:22:20/

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.ppmy.cn/news/1268818.html

相关文章

IO进程线程day9作业

#ifndef _SEM_H_ #define _SEM_H_ #include<myhead.h> //信号灯集的申请&#xff0c;初始化信号灯&#xff0c;并返回信号灯集的id int create_sem(int semcount);//申请信号灯资源操作 P操作 -1 int P(int semid,int semno);//释放信号灯资源操作 V操作 1 int V(int…

杨辉三角形-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第17讲。 杨辉三角形&#…

宋仕强论道之华强北的硬件设施(二十三)

宋仕强论道之华强北的硬件设施&#xff08;二十三&#xff09;&#xff1a; 现在深圳市华强北&#xff08;Shenzhen Huaqiangbei&#xff09;硬件设施哪方面不足呢&#xff1f;以前华强北的“万家百货”和“女人世界”在生意最旺的时候&#xff0c;顾客要在门口排队进商场&…

网络安全知识点总结

网络安全是确保计算机网络免受未经授权的访问、攻击、破坏、更改或泄露的一系列措施和技术的综合体。以下是关于网络安全的更详细的知识点总结&#xff1a; 防火墙和边界安全: 实施防火墙以监控和控制网络流量。边界防御策略包括网络地址转换&#xff08;NAT&#xff09;和端口…

『亚马逊云科技产品测评』活动征文|AWS云服务器EC2实例实现ByConity快速部署

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前言 亚马逊是全球最大的在线零售商和云计算服务提供商。AWS云服务器在…

对多个 App 设计工具组件使用一个回调

当要在App 中提供多种方法来执行某个操作时&#xff0c;在组件间共享回调非常有用。例如&#xff0c;当用户点击按钮或在编辑字段中按下 Enter 键时&#xff0c;App 可以用同样的方式响应。 共享回调的示例 此示例说明如何创建一个 App&#xff0c;其中包含共享一个回调的两个…

GLB/GLTF 模型压缩轻量化

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、具有 Draco 压缩的 GLTF 和 GLB 文件格式 随着对沉浸式 3D 体验的…

创建存储函数

字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch 表内容 id name glass 1 xiaommg glass1 2 xiaojun glass2 1、创建一个可以统计表格内记录条…