当前位置:   article > 正文

MQ--推模式与拉模式_mq 推与拉

mq 推与拉

原文网址:MQ--推模式与拉模式_IT利刃出鞘的博客-CSDN博客

简介

推模式和拉模式指的是 Comsumer 和 Broker 之间的交互。

Producer 与 Broker 之间都是推的方式,即 Producer 将消息推送给 Broker,而不是 Broker 主动去拉取消息。原因如下:

  1. 如果需要 Broker 去拉取消息,那么 Producer 就必须在本地通过日志的形式保存消息来等待 Broker 的拉取,如果有很多生产者的话,那么消息的可靠性不仅仅靠 Broker 自身,还需要靠成百上千的 Producer。
  2. Broker 还能靠多副本等机制来保证消息的存储可靠,而成百上千的 Producer 可靠性就有点难办了,所以默认的 Producer 都是推消息给 Broker。

各个MQ的推拉模式

MQ类别推拉模式默认模式
RabbitMQ支持推模式,没有内置拉模式(可使用API拉取消息)推模式
RocketMQ推拉都支持。(本质上,推模式也是拉模式)推模式
Kafka支持推模式,没有内置拉模式(可使用API拉取消息)拉模式

推模式

简介

本处推模式指的是消息从 Broker 推向 Consumer,即 Consumer 被动的接收消息,由 Broker 来主导消息的发送。

优点

  1. 消息实时性高。Broker 接受完消息之后可以立马推送给 Consumer。
  2. 对于消费者使用来说更简单。消息来了就消费即可。

缺点:推送速率难以适应消费速率

  1. 推模式的目标就是以最快的速度推送消息,当生产者往 Broker 发送消息的速率大于消费者消费消息的速率时,随着时间的增长消费者那边可能就“爆仓”了,因为根本消费不过来啊。当推送速率过快就像 DDos 攻击一样消费者就傻了。
  2. 不同的消费者的消费速率还不一样,身为 Broker 很难平衡每个消费者的推送速率,如果要实现自适应的推送速率那就需要在推送的时候消费者告诉 Broker ,我不行了你推慢点吧,然后 Broker 需要维护每个消费者的状态进行推送速率的变更。这增加了 Broker 自身的复杂度。

使用场景

推模式难以根据消费者的状态控制推送速率,适用于消息量不大、消费能力强要求实时性高的情况下。 

上边是文章的部分内容,为便于维护,全文已转移到此网址:MQ-推模式与拉模式 - 自学精灵

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号