Kafka 消息是采用 Pull 模式,还是 Push 模式

参考答案

Kafka 遵循了一种大部分消息系统共同的传统的设计:producer 将消息推送到 brokerconsumerbroker 拉取消息。

有一些消息系统,例如Scribe 和 Apache Flume 采用了 push 模式,将消息推送到下游的consumer。

这样操作有利有弊:

  • broker 决定消息推送的速率,对不同消费速率的consumer 不太好处理。
  • 消息系统都致力于让 consumer 以最大的速率最快速的消费消息。但是,在push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,consumer 可能会崩溃
  • Push模式,必须在不知道下游 consumer 消费能力和消费策略的情况下,决定是立即推送每条消息,还是缓存之后批量推送。如果为了避免 consumer 崩溃而采用较低的推送速率,可能导致一次只推送较少的消息,从而造成浪费。

Kafka 最终选择了传统的 pull 模式:

  • Pull 模式 ,consumer 可以自主决定是否批量的从 broker 拉取数据,也可以根据自己的消费能力去决定这些策略。
  • Pull 模式,其缺点是如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到达。为了避免这个问题,Kafka 有个参数可以让 consumer 阻塞知道新消息到达。

 

以上,是 Kafka 面试题【Kafka 消息是采用 Pull 模式,还是 Push 模式】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧