开发者社区> 问答> 正文

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

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

展开
收起
芯在这 2021-12-12 09:30:06 912 0
1 条回答
写回答
取消 提交回答
  • Kafka 最初考虑的问题是,customer 应该从 brokes 拉取消息还是 brokers 将消息推送到

    consumer,也就是 pull 还 push。在这方面,Kafka 遵循了一种大部分消息系统共同的传统

    的设计:producer 将消息推送到 broker,consumer 从 broker 拉取消息

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

    consumer。这样做有好处也有坏处:由 broker 决定消息推送的速率,对于不同消费速率的

    consumer 就不太好处理了。消息系统都致力于让 consumer 以最大的速率最快速的消费消

    息,但不幸的是,push 模式下,当 broker 推送的速率远大于 consumer 消费的速率时,

    consumer 恐怕就要崩溃了。最终 Kafka 还是选取了传统的 pull 模式

    Pull 模式的另外一个好处是 consumer 可以自主决定是否批量的从 broker 拉取数据。Push

    模式必须在不知道下游 consumer 消费能力和消费策略的情况下决定是立即推送每条消息还

    是缓存之后批量推送。如果为了避免 consumer 崩溃而采用较低的推送速率,将可能导致一

    次只推送较少的消息而造成浪费。Pull 模式下,consumer 就可以根据自己的消费能力去决

    定这些策略

    Pull 有个缺点是,如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,

    直到新消息到 t 达。为了避免这点,Kafka 有个参数可以让 consumer 阻塞知道新消息到达

    (当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发

    2021-12-12 09:30:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载