消息队列浅谈

Posted wlwl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列浅谈相关的知识,希望对你有一定的参考价值。

为什么要用消息队列

  1. 解耦:如左图, 系统a因为业务需求需要调用系统b,后续因为业务需求可能需要改代码调用系统c,甚至还要考虑被调用的系统挂了访问超时的问题。耦合性太高!

         如右图, 系统a产生一条数据发送到消息队列里面去, 需要数据的系统就去监控消息队列就好了。

  2. 异步:如左图,一个请求过来,3个服务走完需要花450ms; 右图,系统a处理完请求后直接丢给消息队列,然后响应用户,不需要等待。只花了150ms这样就节约了不少时间!一般互联网项目用户请求不超过200ms体验是最好的。

      技术分享图片

  3. 削峰:

      技术分享图片

 

消息中间件的选择

  activemq:万级吞吐量,老牌产品 mq领域的功能比较完善,(社区不活跃, 不建议用)

  rabbitmq:吞吐量比activemq高一点点,基于erlang开发 并发性能好。(社区活跃,适合中小公司)

  rocketmq:十万级吞吐量,阿里产品java开发,经过双十一考验。topic可以达到几百,几千个的级别,吞吐量会有较小幅度的下降(怕像dubbo一样后期黄了,自己团队没人能改造源码。适合中大公司)

   kafka :十万级吞吐量,topic从几十个到几百个的时候,吞吐量会大幅度下降。天然适合大数据实时计算以及日志收集。

以上是关于消息队列浅谈的主要内容,如果未能解决你的问题,请参考以下文章

浅谈消息队列的原理及优势

浅谈消息队列之RocketMQ

消息队列浅谈

浅谈三种使用Redis实现MQ的方式

浅谈--技术架构的演进(微服务,负载均衡,异步,消息队列,数据存储,高并发处理,缓存机制)

浅谈RabbitMQ——死信队列与延迟队列