消息队列(MQ)

简介:MQ(Message Queue)消息队列就是保存消息的容器,是一个高性能的中间件,应用在异步解耦异步处理、削峰填谷日志处理。

1. 特点

  A. 先进先出(FIFO);

  B. 发布订阅;

       C. 持久化;

       D. 分布式部署。

2. 分类

  获取消息方式:A. push(推)方式:优点——可以尽可能快地将消息发送给消费者,缺点——如果消费者处理能力跟不上,消费者的缓冲区可能会溢出;

            B. pull(拉)方式:优点——消费端可以按处理能力进行拉去,缺点——会增加消息延迟;

  能否重复消费:A. 点对点(Queue):不可重复消费;

         B. 发布/订阅(Topic):可重复消费。

3. 技术组件

  A. RabbitMQ:使用Erlang语言开发的开源消息队列系统,基于AMQP协议实现的,支持推拉模式和事务,适合对数据的一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求在其次的场景,吞吐量5.95w/s;

  B. RocketMQ:纯Java开发,是阿里开源的消息中间件,支持推拉模式,可以保证消息顺序,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点,吞吐量11.6w/s;

  C. Kafka:是LinkedIn开源的分布式发布-订阅消息系统,主要特点是基于拉模式来处理消息消费,高吞吐量,适合产生大量数据的互联网服务的数据收集业务日志收集和传输,吞吐量17.3w/s;

  D. ActiveMQ:纯Java实现,兼容JMS,可以内嵌于Java应用中,是最受欢迎和功能强大的开源消息传递服务器;

  E. Redis队列:采用list数据类型实现拉模式,采用lpush/rpush和rpop/lpop实现,阻塞等待采用brpop/blpop命令;

  F. ZeroMQ:号称最快的消息队列系统,能够实现高级、复杂的队列。

 

可参考:Kafka、RabbitMQ、RocketMQ消息中间件的介绍及对比

posted @ 2019-04-27 18:58  如幻行云  阅读(336)  评论(0编辑  收藏  举报