apache-kafka - 如何设置 Apache Kafka 消费者通过互联网获取数据?

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

我已经在网络上的两台不同服务器上配置了 2 个 Kafka,其中一台在英国,另一台在印度,我的场景非常简单,英国是发布者,印度是消费者,但他们都无法获取任何数据.

我检查了我的防火墙,没有端口阻塞/任何情况。我还使用 redis pubsub 测试了我的场景,它有效,但我使用 Kafka 时没有成功。

我应该如何设置我的卡夫卡才能做到这一点?或者是否有可能用 Kafka 做到这一点?

最佳答案

当您想要从多个数据中心进行交互时,不建议使用 Kafka。 Kafka 旨在为您提供高吞吐量,因为您是从网络延迟最小的同一数据中心进行生产和消费。

为什么?

一旦消费者位于不同的数据中心,延迟就会影响 Kafka 与消费者(组重新平衡/偏移提交/心跳)进行的所有协调,而生产者位于不同的数据中心,获取每条消息的确认的延迟send 将相当大,从而减慢生成消息的速度。

因此,理论上,如果您的网络可靠,您就可以很好地进行设置。

现在,如果您考虑将 Kafka 代理分布在数据中心之间,成本将会更高。所有代理间的通信都将被有效地延迟,从而导致副本延迟、大量网络调用(通过互联网)、代理心跳超时等,这在理论上也是可行的。

在实践中,对于这些场景,最好为每个 DC 配备本地 Kafka 集群,在其中使用本地托管的应用程序生成/消费消息,并具有 Mirrormaker聚合数据中心之间的消息。

关于apache-kafka - 如何设置 Apache Kafka 消费者通过互联网获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189126/

相关文章:

apache-kafka - Kafka consumer offset commit when later message is first consumed

node.js - 当将 Consumer.on('message,callback) 放入另一个回调中时,无法从头开始消费消息

apache-kafka - 向节点 1001 : org. apache.kafka.common.errors.DisconnectException 发送获取请求(sessionId=INVALID,epoch=INITIAL)时出错

javascript - 如何在 2 个服务器之间创建套接字 io 连接

java - 等待 kafkaTemplate 待处理的 future

hadoop - Flume HDFS 接收器未从 Kafka channel 在 hdfs 中创建文件

java - Kafka - 生产者 - 句柄 "failed to send"

logging - 如何使用log4j在日志中打印spring kafka配置

apache-kafka - Kafka多分区排序

apache-kafka - 一个代理关闭后,kafka 新生产者无法更新元数据