当前位置: 首页 > news >正文

消息队列核心功能和消息队列做异步的优势

前言

消息队列是后端处理高并发流量最常用的手段,面试必问,是后端开最核心的中间件之一

下面我先简单介绍一下消息队列的核心功能、与异步线程相比消息队列做异步的核心优势是什么,为什么要使用消息队列

消息队列三大核心功能

消息队列核心解决的是通信问题,主要应用在耗时操作、流量波动、解耦的场景上

消息队列三大核心功能异步、解耦、削峰

异步是可以对内存资源瓶颈进行突破,异步将请求放入消息队列后立即释放线程加快响应速度

        异步是解决耗时操作场景

解耦是生产者和消费者解耦,本质上是空间换时间,通过把消息队列这个中间存储,生产者和消费者可以在合适的时间进行操作,实现了生产者和消费者在时间、空间和技术上的独立性

削峰是为了系统中同一时间出现大量请求,可以先累积到消息队列中,后面以缓慢的速度进行一个一个请求的消费

        削峰是解决流量波动场景

消息队列异步与异步线程相比的优势

1、MQ解耦能力强,可以实现对生产者和消费者进行隔离

2、线程挤压会造成内存资源消耗,MQ可以突破对内存资源进行突破

3、MQ可以应对突发大流量进行削峰,就是平稳的让这些请求进行慢慢消费,而异步线程会出现拒绝或者内存出现OOM

4、无法持久化请求数据,可能会造成丢失

5、异步线程的扩展性和容错率很低,MQ可以动态的扩容存储空间,使用死信队列等策略对特殊情况进行处理

常见的消息队列选型

RabbitMQ   

        轻量级消息队列,适合吞吐量不太高的项目使用

        功能丰富,轻主题,主题模式只是一个转发模式

        单机吞吐量在万级,常用于吞吐量要求不高的场景

        运维成本低

Kafka          

        全球消息处理性能最快的⼀款MQ,适合海量数据处理

        单体吞吐量可达百万级,常用于大数据领域

        运维成本高

RocketMQ   

        是阿里巴巴借鉴了 Kafka 的分区思想编写的一款消息队列

        不仅适合海量数据处理还提供了更丰富的功能使用

        单机吞吐量在十万级,常用于电商金融领域

        运维成本适中

http://www.dtcms.com/a/323438.html

相关文章:

  • C++:继承[下篇]
  • Vue 使用element plus组件库提示doesn‘t work properly without JavaScript enabled
  • [ MySQL 数据库 ] 多表关联查询
  • STM32HAL库 -- 10.DMA外设实战(UART串口+DMA读取传感器数据)
  • Tangram官网教程
  • Qt Graphics View框架概述
  • 夺宝奇兵 古老之圈 送修改器(The Great Circle)免安装中文版
  • openvela之STM32开发板部署
  • 力扣(轮转数组)
  • 智慧水务漏检率↓75%:陌讯水下视觉监测方案实战解析
  • 北京天津唐山廊坊沧州打捞日记
  • Nvidia 开源 KO 驱动 开发入门
  • 车流高峰漏检率↓85%!陌讯时序建模方案在智慧交通的实时优化​
  • AtCoder Beginner Contest 418
  • LLVM编译器入门
  • 力扣面试150(51/100)
  • 【Python 工具人快餐 · 第 2 份】
  • 使用SPM进行核磁数据预处理
  • 【无标题】六边形结构在二维拓扑量子色动力学模型中确实具有独特优势,并构建完整的二维拓扑量子色动力学模型。
  • Redis三种特殊数据类型
  • 【深度学习2】logistic回归以及梯度下降
  • synchronized和RentrantLock用哪个?
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • 小白成长之路-Docker部署
  • 第二十八天(cookiesessiontokeny验证)
  • JVM性能调优的原则有哪些?
  • 深入理解C++构造函数与初始化列表
  • P1025 [NOIP 2001 提高组] 数的划分 题解
  • 【嵌入式DIY实例-Arduino篇】-水质检测系统
  • SQL面试题及详细答案150道(01-20) --- 基础概念与语法篇