【退役之重学Java】为什么要使用消息队列

先来一个目前我能想到的回答

  1. 为了满足高并发的需求
  2. 消息队列的使用场景
    • 高并发 ,延时消息
  3. 消息队列的优点
    • 使用消息队列,能够将客户端发送的大量请求都放到消息队列中,而不用立即就去处理
    • 这样使得服务器能够按照自己的节奏,去处理请求
    • 服务器就不会因为突然的大量的请求,而宕机
    • 确保了系统的安全性和稳定性
    • 使用消息队列还可以完成某些特定的功能
    • 比如,使用死信和交换机,完成延时队列
    • 总的来说,消息队列能够极大保证系统的稳定性,安全性,可用性,同时能够完成延时队列。

行,来学学怎么回答这个问题

一、为什么要使用消息队列

  • 使用场景(有很多场景,选取三个核心场景)

    1. 解耦
      现场画个图来说明一下,A 系统发送个数据到BCD 三个系统,调用接口发送,如果E 系统也要这个数据呢?如果C 系统现在不需要了呢?现在 A 系统又要发送第二种数据呢? A 系统负责人处理起来就非常繁琐。还有更麻烦呢,A 系统要时时刻刻考虑 BCDE 四个系统如果挂了的话怎么办?……
    2. 异步
      现场画个图说明一下,A 系统要接受一个请求,需要再自己本地写库,还要在BCD
      三个系统写库,自己本地写库需要3ms,BCD三个库跟别要写300ms,400ms,500ms。最终请求总延时为四者相加。用户感觉到系统非常迟缓,用户体验感非常差。
    3. 削峰
      每天0点到11点,A系统风平浪静,每秒并发请求数量就100个,结果每次一到11点到1点,每秒并发请求数量暴增到1万条。但是系统最大的处理能力就只有1000,系统承受不了,崩了
  • 消息队列的优点

    1. 解耦
      通过消息队列的发布订阅模式,就可以达到异步化解耦的目的
    2. 异步
      这不还是通过消息队列,还完成异步操作嘛,发布者发布消息之后,就直接返回请求了,而不继续等待消息的消费者
    3. 削峰
      把发过来的请求先放在MQ中,系统每一次按量从MQ中获取请求,进行处理
      问题:会出现消息积压

二、消息队列的缺点

  1. 系统可用性降低: 系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,人家ABCD四个系统好好的,没啥问题,你偏加个MQ进来,万一MQ挂了咋整?系统就崩溃了。
  2. 系统复杂性提高: 硬生生加个MQ,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?
  3. 导致一致性问题: A系统处理完了直接返回成功,客户都以为你这个请求成功了,但是如果任意一个消费者失败了,这数据就不一致了

所以,消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种的技术方案和架构来规避掉。最后,你会发现,系统复杂度提升了一个数量级,但关键时刻,还是得用

三、kafka,activemq,rabbitmq,rocketmq 都有什么优缺点

  • 阿巴阿巴阿巴……反正我只用 rabbitmq
  • 总的来说,RabbitMQ 在可靠性、灵活性、性能和扩展性等方面具有优势,适用于各种不同规模和复杂度的消息传递场景。

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

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

相关文章

STM32外设编程指南:GPIO、UART、SPI和I2C

STM32外设编程是嵌入式系统开发中的重要组成部分。以下是对STM32中GPIO(通用输入输出)、UART(通用异步接收传输器)、SPI(串行外设接口)和I2C(互连集成电路)等常见外设的编程指南&…

揭秘抖音快速涨10000粉的方法:巨量千川投流让你轻松快速增粉

抖音已经成为了当今社交平台的热门之一,而如何快速涨粉已经成为了很多人关注的焦点。本文将揭秘一种高效的方式——巨量千川投流,通过官方真实流量和真实粉丝,每天快速涨关注,实现快速增粉1000~10万。 巨量千川投流是一种专业的抖…

必读干货!国内验证签发的SSL证书六大优势

JoySSL官网 注册码230918 国内验证签发的SSL证书,作为网络安全基础设施的重要组成部分,对于维护互联网数据安全、保障用户隐私、提升网站信誉度具有不可小觑的作用。特别是在当前数字化转型加速、数据合规要求日益严格的背景下,选择国内验证签…

路由的基本使用

目录 一、VueRouter介绍 二、VueRouter的使用 三、注意 一、VueRouter介绍 VueRouter是Vue官方的一个路由插件,是一个第三方包。 作用:修改地址栏路径时,切换显示匹配的组件 官网:Vue Router (vuejs.org) 二、VueRouter的使用 注意&am…

Vue 3.3 编译宏 vue3.3新增了一些语法糖和宏,包括泛型组件、defineSlots、defineEmits、defineOptions

Vue 3.3新增了一些语法糖和宏&#xff0c;包括泛型组件、defineSlots、defineEmits、defineOptions defineProps 父组件传参 <template><Child name"my"></Child> </template> <script setup lang"ts"> import Child fro…

Linux学习笔记4---点亮LED灯(汇编裸机)

本系统学习利用的是正点原子的阿尔法mini开发板&#xff0c;本系列的学习笔记也是按照正点原子的教程进行学习&#xff0c;但并不是利用虚拟机进行开发&#xff0c;而是使用Windows下的子系统WSL进行学习。 因为 Cortex-A 芯片一上电 SP 指针还没初始化&#xff0c;C 环境还没准…

【C++】零钱兑换的始端---柠檬水找零

欢迎来CILMY23的博客 本篇主题为 零钱兑换的始端---柠檬水找零 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏系列&#xff1a; Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言&#xff1a; 柠檬水找…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味&#xff0c;作为中国传统美食的代表之一&#xff0c;历经千年的传承与发展&#xff0c;早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代&#xff0c;嘴尚绝卤味凭借其独特的口感和精湛的工艺&#xff0c;成为卤味市场中的佼佼者&#xff0c;引领着卤味文化的新潮流…

图数据库 之 Neo4j 与 AI 大模型的结合绘制知识图谱

引言 随着信息时代的到来&#xff0c;海量的文本数据成为了我们获取知识的重要来源。然而&#xff0c;如何从这些文本数据中提取出有用的信息&#xff0c;并将其以可视化的方式展示出来&#xff0c;一直是一个具有挑战性的问题。近年来&#xff0c;随着人工智能技术的发展&…

Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用

文章目录 一、父组件数据传递N个层级的子组件vue3 provide 与 injectA组件名称 app.vueB组件名称 provideB.vueC组件名称 provideCSetup.vue 二、使用v-model指令实现父子组件的双向绑定父组件名称 app.vue子组件名称 v-modelSetup.vue 三、父组件props向子组件传值子组件 prop…

MyBatis认识

一、定义 MyBatis是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java O…

【热门话题】ElementUI 快速入门指南

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 ElementUI 快速入门指南环境准备安装 ElementUI创建 Vue 项目安装 ElementUI 基…

SpringBoot之远程调用的三大方式

为什么要使用远程调用&#xff1f; SpringBoot不仅继承了Spring框架原有的优秀特性&#xff0c;而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中&#xff0c;存在着本模块的代码需要访问外面模块接口&#xff0c;或外部url链接的需求…

LeetCode 每日一题 ---- 【2079.给植物浇水】

LeetCode 每日一题 ---- 【2079.给植物浇水】 2079.给植物浇水方法&#xff1a;模拟-维护水的剩余量 2079.给植物浇水 方法&#xff1a;模拟-维护水的剩余量 模拟浇水和灌水的步骤就可以了&#xff0c;当剩余水大于等于需要浇的水&#xff0c;步数累加1即可&#xff0c;当剩余…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势

第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

第四十二天 一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root&#xff08;自带默认&#xff09; ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 m…

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

Android的NDK开发中Cmake报缺少对应的x86的so文件

需要实现一个串口操作的命令。 供应商提供了2个so文件。 分别是 armeabi-v7a 和 arm64-v8a 添加到对应的cpp下。 在CMakeLists.txt里添加so文件 # 添加预编译的库 add_library(libxxx SHARED IMPORTED)# 设置库的路径 set_target_properties(libxxx PROPERTIES IMPORTED_…