Apache kafka 当只有一个代理可以访问时,是否有可能生成卡夫卡主题?

Apache kafka 当只有一个代理可以访问时,是否有可能生成卡夫卡主题?,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,如果只有一个代理可以从制作者访问,没有一个zookeeper节点可以从制作者访问,但是所有代理都正常并且可以从彼此访问,那么是否可以生成卡夫卡主题 例如,如果我要通过SSH隧道生成消息,这将是必需的。如果这是一个临时推送,我可能会创建带有复制因子1的主题,并将所有分区分配给有问题的代理,然后在事后重新分配分区,但我希望有一个更灵活的设置 这都是使用java客户端的。制作人不与Zookeeper交互,所以这不是问题 生产者的唯一要求是能够连接到代理,代理是他们想要使用的分区的领导者 如果您连接的代

如果只有一个代理可以从制作者访问,没有一个zookeeper节点可以从制作者访问,但是所有代理都正常并且可以从彼此访问,那么是否可以生成卡夫卡主题

例如,如果我要通过SSH隧道生成消息,这将是必需的。如果这是一个临时推送,我可能会创建带有复制因子1的主题,并将所有分区分配给有问题的代理,然后在事后重新分配分区,但我希望有一个更灵活的设置


这都是使用java客户端的。

制作人不与Zookeeper交互,所以这不是问题

生产者的唯一要求是能够连接到代理,代理是他们想要使用的分区的领导者

如果您连接的代理是您想要使用的分区的领导者,那么您可以向它生成yes

否则就不行了。另外,创建主题可能没有帮助,因为它的分区可以分配给任何代理。此外,为了创建主题,客户端必须连接到控制器,而控制器可能不是您可以访问的代理


如果你只能连接到1个“东西”,你可能想考虑使用类似的东西。您的“隔离”环境可以向代理发送REST请求,该代理可以连接到群集中的所有代理。

生产者不与Zookeeper交互,因此这不是问题

生产者的唯一要求是能够连接到代理,代理是他们想要使用的分区的领导者

如果您连接的代理是您想要使用的分区的领导者,那么您可以向它生成yes

否则就不行了。另外,创建主题可能没有帮助,因为它的分区可以分配给任何代理。此外,为了创建主题,客户端必须连接到控制器,而控制器可能不是您可以访问的代理


如果你只能连接到1个“东西”,你可能想考虑使用类似的东西。您的“隔离”环境可以向代理发送REST请求,该代理可以连接到群集中的所有代理。

在我的情况下,我只生成一小部分预先已知的静态主题,因此在卡夫卡环境中创建独立于制作者的主题不会有问题。我的想法是使用kafka主题的--replica assignment标志将一个主题完全固定到一个代理上,这听起来似乎是可行的,但我同意,REST代理似乎是一个更好的方法。@Mickeel Maison似乎是,所有其他代理都可以通过producer从代理上访问。所以,如果我们通过producer只连接到一个代理,那么它将在内部连接到分区的leader,并将其存储在Kafka上?这更像是一个场景,其中1个代理位于DM区域,其他代理、zookeeper与LAN连接。@Sammy虽然您只需要1个代理来引导,但客户端实际上直接连接到所有需要的代理。经纪人不会在内部将流量转发给其他经纪人,每个经纪人只处理自己的流量。@Mickelmaison谢谢,你说得对。但是我假设(只是一个浮动的想法)一个场景,其中Partitioner选择了3个分区(托管在3个不同的代理上,有几条消息。但只有一个代理是可访问的。现在看来,这种情况不可能发生,因为分区程序不会选择无法从中访问的代理。但是,由于分区仅托管在不可访问的代理上,因此它必须等待/超时/错误。感谢againIt,这取决于您使用的e Partitioner。DefaultPartitioner不考虑制作人是否可以连接到所有代理。它只是在所有分区之间传播消息。在我的情况下,我只制作一小部分事先已知的静态主题,因此在kafka环境中创建独立于制作人的主题不会是一个pr问题。我的想法是使用卡夫卡主题的--replica assignment标志将一个主题完全固定到一个代理上,这听起来似乎是可行的,但我同意,REST代理似乎是一个更好的方法。@Mickeel Maison似乎是,所有其他代理都可以通过producer.S从代理上访问o如果我们仅通过producer连接到1个代理,则这将在内部连接到分区的leader并将其存储在Kafka上?这更像是一个场景,其中1个代理位于DM区域,而其他代理、zookeeper与LAN连接。@Sammy虽然您只需要1个代理来引导,但客户端实际上连接到所有需要的代理直接。代理不会在内部将流量转发给其他代理,每个代理只处理自己的流量。@Mickelmaison谢谢,你是对的。但是我假设(只是一个浮动的想法)一个场景,其中Partitioner选择了3个分区(托管在3个不同的代理上,有几条消息。但只有一个代理是可访问的。现在看来,这种情况不可能发生,因为分区程序不会选择无法从中访问的代理。但是,由于分区仅托管在不可访问的代理上,因此它必须等待/超时/错误。感谢againIt,这取决于您使用的分区器。默认分区器不考虑生产者是否可以连接到所有代理。它只是在所有分区之间传播消息。