【问题标题】:How many connections are made by producer and consumer to a Kafka cluster?生产者和消费者与 Kafka 集群建立了多少连接?
【发布时间】:2018-02-28 01:59:33
【问题描述】:

任何人都可以了解连接数量以及 Kafka Java 生产者和 Kafka Java 消费者与 Kafka 集群建立的连接类型。

连接数是否基于集群中的主题或分区或代理的数量?

【问题讨论】:

    标签: apache-kafka kafka-consumer-api kafka-producer-api


    【解决方案1】:

    每个消费者/生产者都需要连接到作为消费者/生产者想要读/写的分区的领导者的代理。 这意味着客户端不需要连接到集群内的所有代理,而只需要连接到读取/发送消息所需的代理。 在初始配置期间,我们提供了要连接的代理列表(甚至可能只有一个)。使用这样的代理,客户端可以获取有关它想要使用的主题/分区以及它们的放置位置(集群中的其他代理)的元数据信息。此类连接需要到位,以便客户端处理所需的主题/分区。

    【讨论】:

    • 当初始配置生产者/消费者与代理列表中的一个代理建立连接时,该连接是否会保持活动状态,直到我们关闭生产者/消费者?当为分区的领导者读取/写入消息时,连接会在从客户端读取/写入后立即关闭,还是会一直保持到生产者/消费者关闭?消费者/生产者是否会为一个作为多个分区领导者的代理建立多个连接?
    • 一般答案是否定的。从消费者的角度来看,这是正确的,因为即使消费者没有连接到主题离开的代理,该代理将包含消费者用于提交偏移量的 __consumer_offsets 主题的分区(默认 50 个分区)。从生产者的角度来看,如果生产者连接到“错误的”代理,因为主题在另一个主题上,那么连接可能会被关闭,但事实并非如此。
    • 你能否更清楚地解释一下生产者/消费者为初始配置所做的连接。
    • 你知道有一个有 N 个 broker 的集群和一些有 M 个分区的 topic,这样的分区在 broker 上分布(和复制)。当客户端想要读取/写入主题分区时,它需要连接到作为该分区“领导者”的代理(在名为“跟随者”的其他代理上复制)。开始时,客户端可能不知道其感兴趣的主题分区所在的代理是什么。客户端仅连接到 N 个代理中的一个,请求有关该主题的元数据并知道它在哪里(要连接的代理)。
    • 正如我所说,消费者连接不会关闭,因为很确定代理上将是消费者偏移主题的分区。关于另一个问题:不,即使代理是多个主题分区的领导者,也只有一个连接。
    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2017-03-18
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多