0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MQ要怎么实现缓冲流量和削峰填谷

西西 来源:itpub技术栈 作者:沈剑 2020-11-01 10:34 次阅读

MQ,很多的应用场景,是消息的订阅发布,是系统上下游的解耦,MQ的还有一个典型应用场景是缓冲流量,削峰填谷,本文将简单介绍下,MQ要怎么实现缓冲流量,削峰填谷。

站点与服务上下游之间,一般如何通讯?有两种常见的方式。

一种是“直接调用”,通过RPC框架,上游直接调用下游。

一种是“MQ推送”,上游将消息发给MQ,MQ将消息推送给下游。

这两种方式,能否缓存流量,能否削峰填谷?不能。不管采用“直接调用”还是“MQ推送”,都有一个缺点,下游消息接收方无法控制到达自己的流量,如果调用方不限速,很有可能把下游压垮。

举个栗子,秒杀业务:上游:发起下单操作。下游:完成秒杀业务逻辑(库存检查,库存冻结,余额检查,余额冻结,订单生成,余额扣减,库存扣减,生成流水,余额解冻,库存解冻)。

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

如何避免下游被压垮呢?为了避免雪崩,常见的优化方案有两种:(1)业务上游队列缓冲,限速发送;(2)业务下游队列缓冲,限速执行;

不管哪种方案,都会引入业务的复杂性,有“缓冲流量”需求的系统都需要加入类似的机制,正所谓“通用痛点统一解决”,需要一个通用的机制解决这个问题。

能否通过MQ实现缓冲流量?可以,但需要简单修改。

MQ要怎么改,能缓冲流量?由MQ-server推模式,升级为MQ-client拉模式。

MQ-client根据自己的处理能力,每隔一定时间,或者每次拉取若干条消息,实施流控,达到保护自身的效果。并且这是MQ提供的通用功能,无需上下游修改代码。

如果上游发送流量过大,MQ提供拉模式确实可以起到下游自我保护的作用,会不会导致消息在MQ中堆积?下游MQ-client拉取消息,消息接收方能够批量获取消息,需要下游消息接收方进行优化,方能够提升整体吞吐量,例如:批量写。

结论(1)MQ-client提供拉模式,定时或者批量拉取,可以起到削平流量,下游自我保护的作用(MQ需要做的);(2)要想提升整体吞吐量,需要下游优化,例如批量处理等方式(消息接收方需要做的);

架构优化要整体考虑,需要通用服务和业务方一起优化升级。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RPC
    RPC
    +关注

    关注

    0

    文章

    101

    浏览量

    11436
  • 站点
    +关注

    关注

    0

    文章

    6

    浏览量

    7391
收藏 人收藏

    评论

    相关推荐

    Redis可以实现消息中间件MQ的功能

    是一种通信模式:发送者(PUBLISH)发送消息,订阅者(SUBSCRIBE)接收消息,可以实现进程间的消息传递   Redis可以实现消息中间件MQ的功能,通过发布订阅实现消息
    的头像 发表于 01-25 14:48 378次阅读
    Redis可以<b class='flag-5'>实现</b>消息中间件<b class='flag-5'>MQ</b>的功能

    自动奶茶机如何实现精准流量控制

    随着现代科学技术的不断进步,自动奶茶机也走进了我们的生活,给我们的生活带来方便、快捷的茶饮服务,在自动奶茶机的众多功能中,精准流量控制是其核心之一。为了实现这一功能,小型霍尔流量计发挥了重要作用
    的头像 发表于 12-28 15:40 203次阅读
    自动奶茶机如何<b class='flag-5'>实现</b>精准<b class='flag-5'>流量</b>控制

    C++环形缓冲区设计与实现

    的存储空间。环形缓冲区的特点是其终点和起点是相连的,形成一个环状结构。这种数据结构在处理流数据和实现数据缓存等场景中具有广泛的应用。 环形缓冲区的主要作用是存储和管理数据
    的头像 发表于 11-09 11:21 570次阅读
    C++环形<b class='flag-5'>缓冲</b>区设计与<b class='flag-5'>实现</b>

    啤酒机如何实现液体流量控制

    啤酒机是现代家庭和餐饮场所中越来越受欢迎的设备,它可以方便地提供各种风味的啤酒。流量控制是啤酒机制作啤酒过程中的重要环节之一,而流量计则是实现这一控制的关键部件。本文将介绍啤酒机如何通过流量
    的头像 发表于 11-02 14:29 230次阅读
    啤酒机如何<b class='flag-5'>实现</b>液体<b class='flag-5'>流量</b>控制

    正弦波(-250mv-250mv)如何整形成方波给fpga做时钟输入?

    正弦波(-250mv-250mv)如何整形成方波给fpga做时钟输入?
    发表于 10-18 07:57

    善睐物联:5G行业物联卡流量解析-实现全新物联网体验

    5G行业物联卡流量解析-实现全新物联网体验
    的头像 发表于 09-19 10:41 328次阅读

    STM32进阶之串口环形缓冲实现

    STM32进阶之串口环形缓冲实现
    的头像 发表于 09-19 09:20 1746次阅读
    STM32进阶之串口环形<b class='flag-5'>缓冲</b>区<b class='flag-5'>实现</b>

    果汁机如何实现液体流量的控制

    果汁机是我们日常生活中常见的小家电之一,而实现液体流量的控制是果汁机正常运行的关键。通常在设备内部安装霍尔流量计来实现流量的精准控制。 霍尔
    发表于 08-08 14:39

    岹问答专帖

    本帖是由岹工程师一对一回答问题专帖,大家有在使用岹产品中遇到的问题或想了解岹产品的都可以在此帖下提问,我们将由岹原厂工程师在线为您解答,有专人每周至少会看一次此贴保证大家的问题
    发表于 08-03 14:59

    【芒果派MangoPi MQ Quad】Android10的体验

    芒果派MangoPi MQ Quad SBC比较小巧,若能弄起来看个小视频最好了。
    的头像 发表于 07-23 11:35 578次阅读
    【芒果派MangoPi <b class='flag-5'>MQ</b> Quad】Android10的体验

    【芒果派MangoPi MQ Quad】利用MangoPi MQ Quad部署一个网络摄像头

    【芒果派MangoPi MQ Quad】利用MangoPi MQ Quad部署一个网络摄像头
    的头像 发表于 07-20 09:09 910次阅读
    【芒果派MangoPi <b class='flag-5'>MQ</b> Quad】利用MangoPi <b class='flag-5'>MQ</b> Quad部署一个网络摄像头

    R8C/3MQ 组 用户手册: 硬件

    R8C/3MQ 组 用户手册: 硬件
    发表于 07-17 18:44 0次下载
    R8C/3<b class='flag-5'>MQ</b> 组 用户手册: 硬件

    R8C/3MQ 组 数据表

    R8C/3MQ 组 数据表
    发表于 07-17 18:44 0次下载
    R8C/3<b class='flag-5'>MQ</b> 组 数据表

    MQ-135模块的工作原理,如何正确接线MQ-135气体传感器模块

    在这篇文章中,我们将学习如何正确连接或连接MQ-135模块的引脚排列与继电器驱动器级。
    的头像 发表于 06-20 17:00 8446次阅读
    <b class='flag-5'>MQ</b>-135模块的工作原理,如何正确接线<b class='flag-5'>MQ</b>-135气体传感器模块

    MQ家族中的MQ-2烟雾传感器的使用方法

    MQ系列传感器是使用非常广泛的低成本传感器,广泛应用于家庭或工厂的气体泄漏监测装置。本篇介绍MQ家族中的MQ-2烟雾传感器的使用,其他MQ传感器使用都是相类似的。
    发表于 06-14 15:44 4400次阅读
    <b class='flag-5'>MQ</b>家族中的<b class='flag-5'>MQ</b>-2烟雾传感器的使用方法