zoukankan      html  css  js  c++  java
  • MQ怎么解决消息堆积的问题

    MQ怎么解决消息堆积的问题

    • 网上普通回答

      • 修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停止
      • 临时建立好原先10倍或者20倍的queue数量
      • 然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue
      • 接着临时征用10倍机器来部署consumer,每一批consumer消费一个临时queue的数据
      • 这种做法相当于临时将queue资源和consumer资源扩大了10倍,以正常的10倍速度

      但是这种方法远水解决不了进渴

    • 用Shovel

      • 概念:当某个队列的消费堆积严重时,比如超过某个设定的阀值,就可以通过Shovel将队列消息移交到别的一个集群。
      • 当检测到一个队列出现严重的消息堆积的时候,比如可以通过/api/queue/vhost/name接口获取到队列的消息个数超过2000w或者消息的占用大小超过10g的时候,就启用shovel1将队列queue中的消息转发到备份集群的队列queue2。
      • 当检测到队列queue的消息个数低于100w的时候或者大小小于1GB就停止shovel1,然后等queue慢慢处理剩余的堆积。
      • 当queue的消息个数低于10W或者大小小于100MB时,就开启shovel2将队列queue2中暂存的消息返还给对queue。
      • 当检测到队列queue消息个数大于100W或者大小高于1GB就将shovel2停掉。
  • 相关阅读:
    linux | 一次网卡故障处理
    KVM | centos 安装 window 虚拟机
    DNS | named.run文件很大的处理方法
    01
    802.11X用户身份验证
    802.11有线等效加密WEP
    802.11成帧细节
    802.11 MAC基础
    【转载】我为什么放弃了 Linux 内核学习?
    Linux网络编程(一):一个简单的socket程序
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14159767.html
Copyright © 2011-2022 走看看