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

MQ的简单梳理

MQ

  • 作用
  • 场景
    • 消息可靠性
    • 消息顺序性
    • 消息堆积

作用

集成MQ后,同步调用变成了向MQ发消息,对目标服务的调用,由同步变成了异步,实现了服务间的解耦。得益于这种异步,方法调用被封装成消息存放在MQ中,下游目标服务自行决定消费消息的速度。简言之,MQ的加入,实现了服务间的异步调用,达到解耦、削峰填谷的目的。

场景

消息可靠性

保证消息的可靠性,就要确保以下三个环节的可靠:

  1. 保证生产者发送消息到MQ这个过程的可靠
  2. 保证消息在MQ中暂存的可靠
  3. 保证消费消息的可靠。这里消费消息如果是push,即有MQ推消息到消费者,重试由MQ保证;如果消费消息是pull,则需要消费者自行实现重试逻辑以保证消息的可靠消费

生产者投递消息的可靠性:本地消息表+重试,RocketMq的事务消息(半消息)
MQ可靠性:中间件的高可用(持久化、多节点)
消费消息的可靠性:重试机制,超过重试阈值进入死信队列,通常存储非网络原因导致的问题消息,需要人工兜底

消息顺序性

同样,要保证生产者投递时有序,MQ保存时有序,消费者消费时有序。
单线程生产消息和单线程消费消息,MQ保存则需要一个抽象的有序容器,比如指定分区或指定消息组,保证消息不被打乱。

消息堆积

MQ的集成解耦了系统,使得我们可以定向的对指定服务进行横向扩容。如果消息存在堆积,说明消费者消费能力太低,通过在特定时期增加节点来快速消费消息。如果频繁出现消息堆积情况,一方面可以考虑长久性的增加消费节点,另一方面可以考虑调整消费的模式,比如将push模式改为消费者从MQ主动pull,由消费系统自己控制pull的频率。


http://www.mrgr.cn/news/35287.html

相关文章:

  • MySQL与Oracle对比及区别
  • 【算法一周目】双指针(2)
  • Linux(CentOS)安装 Nginx
  • 【时间之外】IT人求职和创业应知【31】
  • 河南省测绘资质管理制度解析
  • 用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析
  • 【动态规划】(五)动态规划——子序列问题
  • 前端报错401 【已解决】
  • 快速排序(plus)与单调栈道,力扣912.排序数组​​​​​​​力扣215.数组中的第k大个元素力扣17.14最小的k个数单调栈力扣.柱状图中最大的矩形
  • 美业门店怎么提升业绩?连锁美业门店管理系统收银系统拓客系统源码
  • 【5米光学卫星(资源一号02D/02E卫星)】
  • 鸿蒙OpenHarmony【小型系统内核(用户态启动)】子系统开发
  • 面试官:vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
  • 德蒂企鹅PAEDIPROTECT:德国医研力作,专为敏感肌婴幼儿量身打造
  • 面试面经|大模型算法岗常见面试题100道
  • P7557 [USACO21OPEN] Acowdemia S题解
  • 【软考】多核CPU
  • 2024年9月23日---关于MyBatis框架(2)
  • 最新版C/C++通过CLion2024进行Linux远程开发保姆级教学
  • 毛竹泛基因组-文献精读52
  • 【代码随想录Day27】贪心算法Part01
  • 电商效果图渲染神器:轻松高效出图
  • gorm.io/sharding:改造,当查询条件中不包含分表键时,从自定义方法中获取对应的表进行查询
  • 【JVM】JVM执行流程和内存区域划分
  • 浅析Android中的View事件分发机制
  • 2024 年最新 Protobuf 结构化数据序列化和反序列化详细教程