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停掉。
  • 相关阅读:
    $.ajax 中的contentType
    如何能让MAC和PC都能读写移动硬盘
    bootstrap中的明星属性
    SQL Server2012如何导出sql脚本并且还原数据库
    Http 请求头中 X-Requested-With 的含义
    jquery实现模拟select下拉框效果
    ASP.NET应用技巧:非托管COM组件的使用
    COM和.NET的互操作
    NET调用Com组件事例
    com组件
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14159767.html
Copyright © 2011-2022 走看看