zoukankan      html  css  js  c++  java
  • 关于Kafka Consumer 与 Partitions

    Consumers and Consumer Groups

    假设我们有一个应用程序需要从Kafka主题中读取消息,对它们运行一些简单的验证,并将结果写入另一个数据存储中。 因此,我们需要将创建一个Consumer对象,订阅相应的主题,并开始接收消息,验证它们并编写结果。 这可能会有一段时间,但如果写入主题的速率超过应用程序验证它们的速率怎么办? 如果您仅限于单个消费者阅读和处理数据,您的应用程序可能会滞后得越来越多,无法跟上传入消息的速度。 显然,需要从主题中扩展消费。 就像多个生产者可以写入同一主题一样,我们需要允许多个消费者从同一主题中读取,在它们之间分割数据。

    当多个Consumer订阅同一个主题并属于同一个Consumer Groups时,该组中的每个Consumer 将从该主题中的不同分区中接收消息。

    4个分区,1个Consumer 4个分区,2个Consumer
    test test
    4个分区,4个Consumer 4个分区,5个Consumer
    test test

    Kafka中扩展topic 数据的消费的方式主要是通过增加其partition数量,以便于设定更多的consumer来并行消费。

    Kafka Consumer通常会进行高延迟操作,例如写入数据库或对数据进行耗时的计算。 在这些情况下,单个Consumer的消费速度可能跟不上数据流入主题的速率。
    因此我们可以通过增加Kafka topic的分区数量,同时添加更多共享负载的consumer来进行扩展。

    拥有多个分区的Kafka topic允许在负载增加时添加更多的Consumer,但当Consumer数目大于topic的分区数,多余的Consumer将会处于空闲状态。

    • 如果要确保应用程序获取topic中的所有消息,请确保应用程序具有自己的consumer group。

    如果你的程序需要读取某个Kafka主题中的所有消息,那就给它指定一个独立的Consumer group。
    如果你想扩展某个主题的消息消费速率,则在该消费程序所属的group中,增加新的consumer。

    参考资料

    Chapter 4. Kafka Consumers: Reading Data from Kafka

  • 相关阅读:
    js方法随机抽取n个随机数
    js里面函数的内部属性
    js中字符串支持正则表达式的方法
    扑克牌交换经典案例
    js里面进行位运算时候的注意事项
    js里面声明变量时候的注意事项
    三种方式加入媒体样式
    如何让多文本内容只显示一行,其余用省略号来显示
    background-clip和background-origin
    闲谈--心态 (zhuan)
  • 原文地址:https://www.cnblogs.com/lestatzhang/p/10611306.html
Copyright © 2011-2022 走看看