我已经在网络上的两台不同服务器上配置了 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/