消息队列在使用中的注意事项

消息队列在使用中的注意事项

异步不是万能的,实现异步重要的手段,消息队列在使用中也是有很多注意事项的。

消息队列的瓶颈

消息队列至少有三处容易出现瓶颈,我们一经典的发布/订阅模式为例。分析一下都可能存在哪些瓶颈。

发布 ---> 队列 ---> 订阅

  1. 入队瓶颈,发布消息队列,处理太慢,发布端堵塞应用程序。
  2. 队列持久化瓶颈,队列持久化是需要写入磁盘的,大量的密集IO操作
  3. 出队瓶颈,(茶壶煮饺子,有嘴倒不出)出队瓶颈还包括订阅端的处理能力,
  4. 如果订阅端的处理能力跟不上,也会出现瓶颈。

发布端常见问题

发布端问题表现在入队速度影响了发布端应用程序的性能,例如

runtime {
    task1();
    task2();
    publish();
    task3();
    task4();
}



loop {
    task1();
    task2();
    publish();
    task3();
    task4();
}

上面伪代码 publish()将阻塞 task3()与task4(),必须等待publish()执行完成才能继续运行。

这样的情况是 发布数量 > 入队的速度, 影响发布端的性能

队列持久化

消息的持久化,既影响入队速度,也影响出对速度,入队是写磁盘操作,出对是修改或者删除操作。 在队列同时进行入队与出队的操作是,还涉及到各种“锁”,例如线程锁与文件锁等等。 最终结果是消息队列性能骤降。

订阅端性能

订阅端的处理能力也影响到队列的堆积程度。如果订阅端处理速度过慢,我们就会发现消息在队列中堆积。

loop {
    function sub_callback(){
        task1();
        task2();
        task3();
        task4();
    }
}

订阅端改进,将队列交给线程处理

threads[max_connet] {
    function sub_callback(){
        task1();
        task2();
        task3();
        task4();
    }
}

总结

我们要尽量做到发布,队列与订阅之间的平衡,才能发挥消息队列的优势。

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏

基于JMS的数据交换既数据互操作平台的解决方案

为解决应用系统间数据和信息的互通、互用,建立一个通用的、分布式的数据集成平台,用以解决异构数据平台数据交流和沟通的问题。

5694
来自专栏Netkiller

消息队列在使用中的注意事项

消息队列在使用中的注意事项 异步不是万能的,实现异步重要的手段,消息队列在使用中也是有很多注意事项的。 消息队列的瓶颈 消息队列至少有三处容易出现瓶颈,我们一经...

3525
来自专栏子勰随笔

SDK开发经验之文档

2298
来自专栏CSDN技术头条

携程开源Redis多数据中心解决方案XPipe

Redis在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部Redis的读写请求在每秒200W,其中写请求约每秒10W,很多业务甚至会将Redis当成...

4629
来自专栏北京马哥教育

手把手教你无代码基础实现Linux运维管理平台

老早之前就想做一个运维管理平台的项目了,但是一直没沉下来去做,上半年的时候毕设选择了这个课题,想着逼自己一把,不管做出来的怎么样,先把它搞起来..... dj...

3525
来自专栏网络产品使用分享

【腾讯云的1001种玩法】利用 Auto Scaling 节省30%成本

公有云提供了很多免费的高级功能,很多中小用户以为自己用不上。实际上稍微研究一下,就能享受很多便利和节省不少成本。 本方案就是利用弹性伸缩(auto-scalin...

9410
来自专栏FreeBuf

看我如何发现Google云平台漏洞并获得$7500赏金

本文讲述了一名乌拉圭17岁高中生,因对信息安全感兴趣,通过学习研究,独立发现谷歌云平台漏洞并获得$7500美金(此前,他曾发现了价值$10000美金的谷歌主机头...

4778
来自专栏码神联盟

碎片化 | 第一阶段-04-Java环境变量配置-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/e0565u3hudu.html Java环境变量配置 1:复制jav...

42011
来自专栏猿人谷

三种Linux服务器监控技术的对比

本文介绍三种Linux服务器监控技术的优缺点,其中有SNMP代理(客户端)方式、SSH方式、安装私有代理(客户端)方式等内容。 Linux系统的强大的功能和绚丽...

2427
来自专栏IT笔记

Lepus搭建企业级数据库全方位监控系统

Lepus(天兔)数据库企业监控系统是一套由专业DBA针对互联网企业开发的一款专业、强大的企业数据库监控管理系统,企业通过Lepus可以对数据库的实时健康和各种...

2175

扫码关注云+社区

领取腾讯云代金券