一、消息队列作用

  • 削峰填谷:秒杀。 可以将 峰值的流量 转移到 其他地方(谷)
    消息队列作用简介
    如图所示,在秒杀时间系统可能会由于瞬间爆发式增长的流量而造成瘫痪,但这个峰值渡过之后系统的访问量又会急剧下降。如此看来,我们的服务器资源利用性不太均衡。
    消息队列作用简介
    如果我们加入消息队列来将一部分请求先放入队列,让服务器有能力先处理一部分,等服务器处理完之后再将另一部分请求发给服务器,以此达到削峰填谷的目的。
  • 解耦合:生产者 和 消费者 可以通过 mq解耦合
    生产者-mq-消费者
    消息队列作用简介
  • 异步消息
    生产者-mq-消费者

消息队列作用简介
异步的优点:生产者将消息放入队列后就可以直接回来处理其他事情了,不必再等待(阻塞)消费者的结果返回后在去处理其他事情。

主流MQ产品协议:AMQP (Advanced Message QUeuing Protocol,高级消息队列协议) 、XMPP、 SMTP、 STMP

ActiveMQ: apache ,多种协议(AMQP ,MQTT,OpenWire,Stomp ) , java ,将数据直接持久化到数据库中,可靠性较低

RabbitMQ: 基于AMQP , 运行Erlang语言,性能高,高并发,可靠性高

Kafaka: linkedin开源MQ,完全分布式架构,高吞吐量(单机10w/s) ,设计之初 是为了 处理 日志 , 大量数据的数据收集业务

RocketMQ:阿里巴巴->Apache , 双十一 ,Java/C++/go语言,支持多协议(AMQP,XMPP,STMP,STOP),分布式 易扩展 , 亿级消息堆积能力(单机1万以上 持久化队列)

后续我们就以RocketMq为例,展开讨论。
其他MQ: Redis , ZeroMQ

相关文章: