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

MQ-导读

什么是MQ?

MQ是一款消息中间件,通常被称为"消息队列",用于分布式架构中上下文的异步通信,

由三个角色组成:

1. 消息提供者:发送消息的人

2. 消息接收者:接收、处理消息的人

3. 消息代理者:负责存放消息、转发消息

举个例子

就拿登录来说,用户在登录的时候需要去进行一些其他的操作,比如风控、短信、记录日志,如果采用同步的方式,那么用户在远程调用其他服务的时候就需要去等待其他微服务完成然后返回数据,这种情况十分影响用户的体验,所以就需要用到MQ异步消息,用户登录完直接将消息发到MQ,然后又MQ去进行异步通知其他服务,用户登录这块就能够直接结束,无需做没用的等待。

MQ的学习路线

同步调用

拿支付订单来举例子,如果是同步的话,那么就代表着支付服务完成了然后要依次去调用其他的服务,当服务多的时候,计算每个服务耗时都很短,但是加起来之后时间就不短了,而且还容易出现一些其他的情况,比如有个微服务突然出问题了,被熔断降级了,那么这一整个微服务都无法被访问,而且扩展性差,如果需要其他的功能,比如积分、短信通知,都不断的要去修改主代码去扩展,不符合开闭原则,如果说使用MQ将状态直接保留下来,那么其他的扩展业务只需要从MQ拿到状态信息之类的,就可以实现扩展,不需要去修改主代码业务

异步调用

异步调用使我们的业务无需等待即可结束,无需上下级传递消息,只需要在业务完成后将信息存储到MQ服务器即可,其他的业务就负责监听MQ,减少了耦合性,双方都不知道对方的存在

技术选型

市面上比较常见的异步调用技术RabbitMQ、RocketMQ、Kafka这三种,RabbitMQ算是比较常见的,一般来说中小型公司使用的都是RabbitMQ,这个是Rabbit公司所开源的与其他的大厂不同的是,这个公司基本上就是只开发这一个产品,所以维护升级的频率比较高,以及互联网中一些常见的问题解决方案都比较多,虽然吞吐量不如大厂,但是能够保证消息的可靠性和适应能力,对不同的语言技术都能够支持


http://www.kler.cn/a/466407.html

相关文章:

  • umd格式
  • 【计算机视觉技术 - 人脸生成】2.GAN网络的构建和训练
  • 深入Android架构(从线程到AIDL)_10 主线程(UI 线程)的角色
  • ASA第六天笔记
  • Java项目实战II基于微信小程序的家庭大厨(开发文档+数据库+源码)
  • Linux中隐藏操作身法
  • 显示视频DP、HDMI、DVI、VGA接口的区别
  • 九转算法蛊
  • linux nginx maccms管理后台无法进入页面不存在和验证码不显示的问题
  • 深入探究 CSRF 攻击:原理、危害与防范之道
  • 校园顺路代送微信小程序ssm+论文源码调试讲解
  • 接受Header使用错Map类型,导致获取到的Header值不全
  • 黑马Java面试教程_P10_设计模式
  • [每周一更]-(第130期):微服务-Go语言服务注册中心的中间件对比
  • Vue 项目中实现打印功能:基于目标 ID 的便捷打印方案
  • LeetCode 142:环形链表入口
  • qt的utc时间转本地时间
  • Java基本数据类型与字节数组的相互转换
  • JAVA复习题
  • 使用docker desktop提示 需要更新WSL
  • 深入理解 Android 中的 ApplicationInfo
  • 深入Android架构(从线程到AIDL)_07 线程(Thread) 概念
  • 利用Claude3.5点评学习LightRAG源码
  • css中的渐变
  • 学技术学英文:Tomcat的线程模型调优
  • 基于 GitHub API 的 Issue 和 PR 自动化解决方案