学习同步异步的概念,并了解MQ消息队列

news2024/11/20 0:40:37

文章目录

  • 一、 同步和异步
    • 1.1 同步调用
    • 1.2 异步调用
  • 二、MQ
    • 1.1 介绍
    • 1.2 MQ的优点和使用场景

一、 同步和异步

1.1 同步调用

  同步调用是一种程序调用方式,在该调用方式中,调用者发起一个请求,然后一直等待被调用者返回响应结果后再继续执行。在同步调用中,调用者和被调用者之间是一种阻塞的关系,也就是说,在调用者等待被调用者响应的期间,调用者会被暂停,无法继续执行其他操作。


在这里插入图片描述

视频通话基于同步技术

  通常情况下,同步调用是在两个进程或者线程之间进行的。当调用者发起请求时,它会等待被调用者响应,直到收到响应后才会继续执行。这种调用方式比较直观,容易理解和实现,适用于一些简单的应用场景。

同步调用的优点:

  • 调用方式比较简单,易于理解和实现;
  • 响应时间可控,调用者可以通过设置超时时间来控制调用的响应时间;
  • 数据传输比较稳定,可以保证传输的可靠性。

同步调用的缺点:

  • 调用者需要等待被调用者响应,因此会降低系统的并发性和吞吐量;
  • 如果被调用者响应时间过长或者出现异常,调用者会一直处于等待状态,可能会导致系统出现阻塞等问题。

1.2 异步调用

  异步调用是一种程序调用方式,在该调用方式中,调用者发起一个请求后,不需要等待被调用者立即返回响应结果,而是可以继续执行其他操作。当被调用者完成处理后,会通过回调函数或其他方式通知调用者,并返回响应结果。


在这里插入图片描述

打字聊天基于异步技术

  在异步调用中,调用者和被调用者之间不会形成阻塞的关系,调用者可以继续执行其他操作,不需要一直等待被调用者的响应。因此,异步调用方式可以提高系统的并发性和吞吐量,适用于处理复杂、耗时的任务或者需要同时处理多个请求的场景。

  异步调用的处理流程通常分为三步:发起请求、处理请求和处理响应。在发起请求时,调用者将请求发送给被调用者,然后立即返回。在处理请求时,被调用者异步处理请求,并在处理完成后通知调用者。在处理响应时,调用者接收到被调用者的响应后,通过回调函数或其他方式进行处理。

异步调用的优点:

  • 可以提高系统的并发性和吞吐量,可以在处理复杂、耗时的任务时提高系统的性能;
  • 可以提高系统的响应速度,因为调用者不需要等待被调用者的响应,可以继续执行其他操作;
  • 可以提高系统的可扩展性,因为可以通过增加处理请求的节点来提高系统的性能和可用性。

异步调用的缺点:

  • 调用方式比较复杂,需要对多线程编程和异步编程有一定的理解;
  • 可能会出现竞争条件、死锁等问题;
  • 需要考虑消息的可靠性和传输方式等问题。

二、MQ

1.1 介绍

  MQ(Message Queue)消息队列是一种异步通信方式,用于不同应用程序、不同服务之间的消息传递。通过将消息放入队列中,生产者和消费者可以解耦,即生产者不需要等待消费者处理消息,而消费者可以在需要时获取消息。这种模式可以提高系统的可伸缩性和可靠性,同时也可以减少应用程序的耦合度。
在这里插入图片描述

MQ消息队列通常由以下几个部分组成:

  1. 消息队列服务器:消息队列服务器用于存储和分发消息。它可以是单个节点,也可以是集群。
  2. 生产者:生产者将消息发送到消息队列服务器中。
  3. 消费者:消费者从消息队列服务器中获取消息并处理它们。
  4. 消息:消息是生产者和消费者之间传递的数据。消息可以包含任何格式的数据,例如文本、JSON、二进制数据等。

1.2 MQ的优点和使用场景

MQ消息队的优点:

  1. 异步通信:生产者和消费者之间的通信是异步的,不需要等待对方的响应。
  2. 解耦:生产者和消费者之间的解耦可以提高系统的可伸缩性和可靠性,并减少应用程序的耦合度。
  3. 可靠性:消息队列通常提供持久化和备份机制,可以确保消息的可靠传递。
  4. 伸缩性:通过添加更多的消息队列服务器节点来实现水平扩展。
  5. 异构系统集成:MQ消息队列可以用于将不同语言、不同系统之间的数据进行集成。

  使用MQ消息队列的主要原因是解决不同应用程序或不同服务之间的异步通信问题,这些应用程序或服务之间可以是相互独立的、分布式的,甚至可能是不同的组织或公司。

MQ消息队列的使用场景:

  1. 高并发场景:在高并发场景下,如果直接使用同步方式进行通信,可能会导致请求过多,服务过载或者崩溃。MQ消息队列可以实现异步通信,提高系统的并发能力和稳定性。
  2. 异步处理:有些任务需要异步处理,例如异步地发送电子邮件、短信、通知等,这时候可以将任务发送到MQ消息队列中,由后台的消费者来处理。
  3. 高可靠性和持久性:当应用程序或服务之间需要进行可靠的数据传输时,使用MQ消息队列可以提供可靠性和持久性保障,即使在网络或者其他不可预测的情况下,消息也可以被可靠地传递和处理。
  4. 解耦和可扩展性:在复杂的分布式系统中,应用程序或服务之间的紧密耦合会导致系统难以扩展和维护。通过使用MQ消息队列,可以将生产者和消费者解耦,实现分布式系统的可扩展性。
  5. 异构系统集成:在企业级应用系统中,经常需要集成不同的系统,使用MQ消息队列可以实现不同系统之间的异构集成,将各个系统进行解耦,提高系统的可维护性和可扩展性。

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

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

相关文章

wps - 使用宏来为每行标记序号

在WPS中遇到需要加序号的虽然可以用项目符符号来标注# 但或许用宏更厉害一些 WPS 的宏是一种自动化工具,可以通过编写宏代码来自动执行一些操作,例如创建和编辑文档、打印、格式化等。 WPS 宏的编写可以使用 VBA(Visual Basic for Applicat…

236. 二叉树的最近公共祖先 ——【Leetcode每日一题】

236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff…

inode和软硬链接

文章目录: 一、理解文件系统1.1 什么是inode1.2 磁盘了解1.2.1磁盘的硬件结构1.2.2 磁盘的分区1.2.3 EXT2文件系统 二、软硬链接2.1 软链接2.2 硬链接 一、理解文件系统 1.1 什么是inode inodes 是文件系统中存储文件元数据的数据结构。每个文件或目录都有一个唯一…

JavaSE学习进阶day06_01 数据结构(进阶)

第一章 数据结构(温习数据结构的内容) 1.1 树基本结构介绍 树具有的特点: 每一个节点有零个或者多个子节点 没有父节点的节点称之为根节点,一个树最多有一个根节点。 每一个非根节点有且只有一个父节点 名词含义节点指树中的…

第二届“威固新能源 GO野”,威固重塑新能源出行不凡体验

中国,上海,近日——全球特种材料公司伊士曼旗下汽车膜品牌威固(V-KOOL),于近日开启了第二届“威固新能源 GO野”不凡之旅,通过专为新能源而来的创新产品与服务,引领高端新能源车主驶出城市生活的…

晨控可视化标签在资产管理上的应用及优势

晨控可视化标签在资产管理上的应用及优势 资产是企业功能的核心组成部分,是企业重要的基础设施建设。资产存在的形式各种各样,不仅具有价值高、流动性强、安全管理困难的特点,而且成为资产管理的重要环境之一。通过射频识别技术,…

【00-Java Web先导课】-如何进行IDEA的安装

前沿 Pycharm与IDEA激活教程一样,本篇以IDEA激活教程为例进行保姆级教学 文章目录 前沿一、支持系统二、软件版本1.引入库 三、软件下载教程1、点击网址进入jetbrains官网2、按照下图选择相应下载的软件3、按照如图选择需要下载的版本4、按照如下方式进行下载软件 四…

Web服务器

目录 什么是Web服务器? Web容器 Servlet Servlet 规范 Servlet 的API结构 编写Servlet servlet生命周期(产生到销毁的过程) 服务器产生响应信息的两种格式 什么是Web服务器? Web服务器是一个程序,用于接收客户…

【LeetCode: 718. 最长重复子数组 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Scillus | 来吧!它可以大大简化你的Seurat分析流程哦!~(一)(数据预处理)

1写在前面 太久没更了,真是累到极致,每天回到家都只想睡觉。😭 今天介绍一下Scillus包,是一个基于Seurat和ggplot2的R包,用于增强scRNA-seq数据的处理和可视化。🧐 它可以对Seurat对象进行多种类型的图形展…

多重背包问题的三种解法(转化为01背包、二进制拆分、单调队列优化)

多重背包问题的三种解法 转化为01背包二进制拆分优化单调队列优化 转化为01背包 题目链接:acwing4. 多重背包问题 I 题目描述 数据范围 思路: 可以转化为01背包问题求解,将s个物品都看作单独的一个物品,时间复杂度为 O ( N ∗ V ∗ S ) O(…

【一】MATLAB基础知识

【一】MATLAB基础知识 1 数值数据类型的分类 整型 无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、 无符号64位整数。 带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、 带符号64位整数。 无符号8位整数数据范围&#xff…

树和二叉树(概念及其结构)

1.树概念及结构(了解)‘ 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它 叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶…

php+vue+mysql校园大学生兼职信息网站系统

商家功能模块 商家通过点击后台管理,进入页面可以进行首页、个人中心、热门兼职管理、兼职接单管理、学生咨询管理、兼职任务管理、完成评价管理等功能模块,进行相对应操作 兼职接单管理:通过兼职接单管理可以进行获取兼职名称、专业、分类、…

佳电股份:智能互联 绿色驱动 拥抱未来

4月 13—15 日,2023年易派客工业品展览会、石油石化工业展览会、第七届中国石油和化工行业采购年会,在苏州国际博览中心举行。在本次展会上,佳电股份展出了超高速永磁电机、超高效高压三相异步电动机、智慧电机以及配套服务等主要产品。 哈尔…

linux 下 mysql 平滑升级,不暴力

只适合版本跨越较小的,如果从5到8这种不支持 查看当前版本5.6.40,升级到5.6.50(因为一些漏洞的原因) 1:下载需要升级的版本 2:解压 3:停止当前的mysql服务 service mysql stop 4:备份原先系…

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…

FL Studio21安装体验试用下载fl水果支持最新中文语言功能

FL Studio是什么&#xff1f;如果你打算将来朝着艺术和音乐方向发展&#xff0c;那么学习音乐理论和音乐制作就是一门基础了。FL Studio 21还提供了几十个内置的音乐和声音样本库&#xff0c;以及多种音频效果处理器和虚拟乐器&#xff0c;包括合成器、鼓机、效果器等。这些插件…

【C++初阶】:类与对象(上)

类与对象 一.面向对象的初步认识二.初步认识类三.类的权限四.类的声明和定义五.封装六.类的实例化七.类的大小 一.面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 例如洗衣服 而C是基于…

GFD233A 3BHE022294R0103

GFD233A 3BHE022294R0103 ABB KUC321AE PLC模块 HIEE300698R0001 KU C321 AE01 ABB KUC711 3BHB004661R0001 高压变频模块 KUC711AE ABB KUC755AE105 3BHB005243R0105 驱动控制系统模块 KUC755 ABB KUC755AE106 3BH005243R006 控制系统模块 KU C755 AE 106 ABB LDGRB-01 3BSE01…