常见消息中间件

82bd9200642c4898b012084c7f98787e.jpgActiveMQ

 

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

 

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

 

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

 

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

 

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

 

 

 

RabbitMQ

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

 

RocketMQ

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

 

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

 

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

 

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

 

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

 

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

 

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

 

 

 

Kafka

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

 

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

 

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

 

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

 

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

 

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

 

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

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

相关文章

2024 ,Android 15 预览版来了

日前,Android 15 发布了 Preview 1 预览版,预览计划将从 2024 年 2 月持续到 Android 15 公开发布(预计 10 月),3月是开发者预览版 2,4 月将推出 Beta 1,5 月将推出 Beta 2,6 月的 B…

Studio One 6免费下载安装激活教程

一、Studio One 6安装 1.双击Studio One6安装包(见文章尾部),如下图,可以切换语言,点击【OK】。 2.根据安装导航,点击【下一步】 3.阅读许可证协议后,点击【我接受】。 4.选择安装位置&#xf…

Java 数据结构篇-深入了解排序算法(动态图 + 实现七种基本排序算法)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 实现冒泡排序 2.0 实现选择排序 2.1 选择排序的改良升级 3.0 实现堆排序 4.0 实现插入排序 5.0 实现希尔排序 6.0 实现归并排序 6.1 递归实现归并排序 6.2 使用…

用了大品牌做流量,用自主品牌做利润。

用国际品牌和有品牌的产品把用户数量做起来,用大品牌做流量,积累用户数据。当你的用户数量达到一定量之后,再做自主品牌,这叫水到渠成。 用户最好的商业模式不需要教育。用别人的品牌去打穿流量,打穿用户,…

SpringBoot基于JWT的token做登录认证

背景 我们在基于Session做登录认证的时候,会有一些问题,因为Session存储到服务器端,然后通过客户端的Cookie进行匹配,如果正确,则通过认证,否则不通过认证。这在简单的系统中可以这么使用,并且…

如何重启docker中运行的镜像

要重启 Docker 中运行的容器,您可以使用 docker restart 命令。首先,您需要知道容器的 ID 或名称,然后使用该信息来重启容器。以下是具体步骤: 找出容器的 ID 或名称 执行 docker ps 命令列出所有正在运行的容器,找到您…

软件常见设计模式

设计模式 设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想。同一场景有多种设计模式可以应用,不同的模式有各自的优缺点,开发者可以基于自身需求选择合适的设计模式,去解决相应的工程难题。 良好的软件设计和架构&#xff0…

vite是什么

vite 是什么 vite —— 一个由 vue 作者尤雨溪开发的 web 开发工具 Vite由两个主要部分组成 dev server:利用浏览器的ESM能力来提供源文件,具有丰富的内置功能并具有高效的HMR生产构建:生产环境利用Rollup来构建代码,提供指令用…

SpringIOC之support模块StaticApplicationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

vmware的ubuntu虚拟机因空间满无法启动

正在虚拟机编译android源代码,没注意空间不足,结果回来发现了 Assuming drive cache: write through 的问题,经查是空间不足的原因 按照这个教程,清除出来部分空间,才能进去系统,并且对系统空间做下优化 …

测试总监,让我们用这份《测试用例规范》,再也没加班过

经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 固然,编写一份好的测试用例需要:充分的需求分析能力 理论及经验加持,作为测试职场摸爬打滚的老人…

GitHub热门项目之Memos 打造私有备忘录

效果 1. 写备忘录或简单笔记,支持Markdown 2. 时间线 3. 探索可以看到其他用户公开的内容 项目地址 usememos/memos:一种开源的轻量级笔记服务。轻松捕捉和分享您的伟大想法。 (github.com)https://github.com/usememos/memos 体验地址 Memoshttp://…

2000-2022年各省环境规制数据(原始数据+计算过程+计算结果)

2000-2022年各省环境规制数据(原始数据计算过程计算结果) 1、时间:2000-2022年 2、范围:30省 3、来源:各省年鉴、国家统计局、统计年鉴 4、指标:年份、省份、工业污染源治理投资完成实际额、工业增加值…

基于SpringBoot的教师宿舍管理系统设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的教师宿…

CapCut - 剪映国际版11.1.0

​【应用名称】:CapCut - 剪映国际版 【适用平台】:#Android 【软件标签】:#CapCut #剪映国际版 【应用版本】:11.1.0 【应用大小】:231MB 【软件说明】:软件升级更新。目前大家广泛使用的最令人惊叹、最专…

【鸿蒙 HarmonyOS 4.0】开发工具安装

一、准备开发环境 1.1、安装IDE 鸿蒙应用开发需要使用配套的IDE——HUAWEI DevEco Studio。 DevEco Studio基于IntelliJ IDEA Community(IDEA社区版)构建,为鸿蒙应用提供了一站式开发环境,集成了开发、运行、调试以及发布应用的…

蓝色证件照怎么改?分享3款实用的证件照工具!

在日常生活和工作中,我们经常需要用到蓝色背景的证件照,无论是求职、办理证件还是其他正式场合,一张高质量的蓝色证件照都是必不可少的。然而,不是每个人都能在照相馆拍出完美的证件照,这时候,一些专业的证…

Socket通信---Python发送数据给C++程序

0. Problems 很多时候实现某种功能,需要在不同进程间发送数据,目前有几种主流的方法,如 让python和C/C程序互相发送数据,其实有几种方法: 共享内存共享文件Socket通信 在这里只提供Socket通信的例程,共享…

不要浪费

解法&#xff1a; 记录一下tle的代码 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n bool check(vector<int>& a, int l,int k) {int sum 0;for (int i 0; i < a.size() && l…

到底什么是CIDR(无类域间路由)?

【摘要】 CIDR&#xff08;无类域间路由&#xff09;是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式&#xff0c;有效地解决了IPv4地址空间不足的问题。本文将详细介绍CIDR的原理、使用方法以及它对互联网的影响&#xff0c;还会针对CIDR出三道例题…