文章目录

  • 参考文章
  • 什么是消息队列,什么是RPC
  • 为什么要使用MQ消息队列
    • 1. 解耦(可用性)
    • 2. 流量削峰
    • 3. 数据分发
  • 消息队列的缺点
  • 多种主流传统消息队列MQ对比
  • 传统消息队列RocketMQ和微消息队列MQTT对比

参考文章

https://www.jianshu.com/p/15081799d66b
非常好的描述消息队列应用场景文章1
非常好的描述消息队列应用场景文章2
https://www.cnblogs.com/mokafamily/p/9061322.html

什么是消息队列,什么是RPC

在分布式服务器和服务器通信时,RPC可以解决问题。
而我们使用消息队列一个主要优势就是,增加消息的堆积能力,也就是类似于Java线程池实现基本原理就是消息中间件。当然这也增加了维护成本。和复杂度。

所以现在一般都不使用RPC

为什么要使用MQ消息队列

1. 解耦(可用性)


不同服务器系统之间使用RPC调用,会使系统之间的耦合性非常高。
当一个系统挂了另一个系统就无法使用。可用性降低。

订单系统把消息发送给MQ服务,然后不同的系统再进行消费。当一个系统挂了也不要紧,等恢复的时候再去MQ中拿消息,这样系统的可用性就大大提高了。也就是耦合性没那么高。一个系统不那么依赖于另一个系统。
而使用MQ我们则可以降低该耦合性。

2. 流量削峰

场景1: 当用户量瞬间陡增,秒杀处理系统可以处理这么多的请求,但是当发送给通知系统这样可能压垮数据库。

举个栗子,秒杀业务:

上游发起下单操作。(比如机票系统,火车票系统,等都是上游,只发起请求操作。)

下游完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)

上游下单业务简单,每秒发起了10000个请求,下游秒杀业务复杂,每秒只能处理2000个请求,很有可能上游不限速的下单,导致下游系统被压垮,引发雪崩。

解决:我们使用MQ在中间,这样A系统就每次从MQ拉取我能承受的2K个请求。虽然可能会有一定延迟,但比系统挂了强。


场景2: 也就是我们的需求场景,用户服务器系统,发送大量请求调用我们医疗服务器系统接口。我们系统可能无法承受如此大请求量。那么我们在系统和系统之间加一个MQ服务。进行流量削峰。在这里也考虑到经济目的,因为我们不可能光为了峰值请求而更换硬件和软件,毕竟流量峰值只是短暂的。

3. 数据分发


比如A系统要分发消息给多个系统,那么如果说他每次都发送给B系统C系统D系统,当多个系统更改需求的时候都需要通知A系统,这样对A系统来说很麻烦。使用MQ直接把消息发送给MQ。谁需要消息谁就去MQ拿就非常方便。

消息队列的缺点

  1. 添加MQ,如果MQ服务挂了,导致消息发送和接收就无法使用了。
  2. 复杂度提高。

多种主流传统消息队列MQ对比


现在使用比较多的是RabbitMQ和Rocket MQ
RabbitMQ是国外的RocketMQ是阿里的。
RocketMQ的支持比较多,可扩展和可用性强。
RabbitMQ是erlang编写的,性能非常好,时效性非常强,但是可扩展性不是很强。

传统消息队列RocketMQ和微消息队列MQTT对比

传统的消息中间件,例如消息队列 RocketMQ、消息队列 RabbitMQ kafka 等都是面向微服务大数据等领域,负责消息的存储和转发,消息的生产者和消费者都是服务端应用

而移动互联网和 IoT 领域则有所不同,这类场景更侧重于多语言多平台的海量设备接入,消息的生产和消费过程的业务属性很突出,传统的消息中间件并不适合这些领域。

微消息队列 MQTT 在设计上是一个面向移动互联网和 IoT 领域的无状态网关,只关心海量移动端设备的接入、管理和消息传输

http://www.360doc.com/content/19/0514/20/835902_835720104.shtml


基于上图我们可以大概了解,MQTT是架在服务端和客户端之间他可以分发给多个客户端。而RocketMQ是架在服务器与服务器之间。

消息队列MQ与微消息队列MQTT相关推荐

  1. 消息队列MQ如何保证消息的幂等性

    Table of Contents 一.出现非幂等性的情况 二.解决办法 1.mq接收生产者传来的消息: 2.消费者消费mq中的消息: 三.重复消费可能会在什么场景下出现(以kafka为例) 怎么保证 ...

  2. 消息队列MQ夺命连环11问:kafka、rabbitmq、rocketmq、activemq

    <消息队列MQ如何保证消息的幂等性> <RabbitMQ架构> <ZeroMQ简介:一种高性能的异步消息传递库> <Rocketmq原理&最佳实践&g ...

  3. 消息队列MQ 之 Kafka

    目录 前言 一.消息队列 MQ 为什么需要消息队列(MQ) 使用消息队列的好处 消息队列的两种模式 二.Kafka 概述 Kafka 简介 Kafka 的特性 三 实验 前言 一.消息队列 MQ MQ ...

  4. OneNET物联网平台06 消息队列MQ服务开启与配置

    消息队列MQ可作为规则引擎对接的扩展增值服务使用,配合物联网套件,可形成具备设备接入.设备管理.消息分发.应用承载能力的高性能服务组合 消息队列MQ具有如下特点: 消息缓存 MQ服务支持消息缓存,可以 ...

  5. 消息队列面试 - 如何解决消息队列的延时以及过期失效问题?

    消息队列面试 - 如何解决消息队列的延时以及过期失效问题? 面试题 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决? 面试官心理分析 你看 ...

  6. 小程序paho.mqtt连接微消息队列 MQTT 版

    物联网项目现在越来越多,MQTT的使用场景也越来越广泛,同时遇到的技术问题也是越来越复杂. 最近在做一个小程序连接阿里云的微消息队列MQTT版,说实话,通过这次debug,发现阿里的技术文档很多方面不 ...

  7. OneNET物联网平台08 MQTT产品设备发送消息到消息队列MQ

    一.消息生产 设备终端接入OneNET平台不同的产品套件,上传设备消息至OneNET平台: 开通消息队列MQ服务,创建消息队列MQ实例,添加topic和sub: 选择不同的 数据源 配置规则引擎和消息 ...

  8. SpringCloud 微服务 (十) 消息队列MQ 基础

    2019独角兽企业重金招聘Python工程师标准>>> 壹 之前学习了SpringCloud Bus结合MQ,没有多学习MQ,本次学习相关内容,先了解异步,同步就不说了 异步: 客户 ...

  9. C#实现阿里云微消息队列LMQ

    本文属于个人原创作品.个人总结,谢绝转载.抄袭.如果您有疑问或者希望沟通交流,可以联系QQ:865562060. 一.简介 MQ 微消息队列(Light Message Queue,简称 LMQ): ...

最新文章

  1. java jnlp被阻止_JNLP应使用特定的Java版本,但会出现错误结果
  2. CentOS安装EMACS文件夹树型图插件与颜色插件
  3. Smooth_L1_Loss函数的计算方式
  4. GCC编译器选项及优化提示
  5. WinSock编程基础
  6. 华为开发者大会上,鸿蒙问世、方舟编译器开源、还有 EMUI 10;壕置100万美元,苹果推出漏洞攻击报告赏金计划……...
  7. firebase登录验证_如何使用Firebase通过三步向身份验证本机添加身份验证
  8. 加大Linux服务器的文件描述符
  9. 机器学习:用正规方程法求解线性回归
  10. pandas—pandas.read_parquet
  11. 深度学习优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
  12. 2021-09-06Cross-product transformation
  13. 西瓜书(机器学习周志华)公式详细推导
  14. 【知识点和练习题】心田花开:二年级语文汉语拼音补习
  15. 「Prompt」是什么,并用简单的范例让你了解如何善用他、避开陷阱,以此获得更好的 ChatGPT 回复。
  16. 文献阅读-10X单细胞揭示肿瘤浸润性T细胞的泛癌单细胞图谱
  17. SudokuGame 记软工第二次作业
  18. hcie 论述-mpls lsp
  19. Filebrowser:一款轻量级个人网盘
  20. 最新水利水电安全员考试判断题库(2)

热门文章

  1. Hue(四)集成Hive
  2. matlab学习记录
  3. 关于机器人机械臂参数辨识
  4. java装饰模式实例解析
  5. VCSA重装后VSAN磁盘组信息无法显示
  6. 三角函数的振幅、周期、频率
  7. Google面试题:人和自行车匹配
  8. 使用py2exe生成一个exe文件
  9. 2021下半年学习,我推荐这10个前端公众号
  10. AutoFac使用笔记以及操作技巧(保姆级操作)