kafka适合上网吗?
更准确地说,我想要的是将 kafka 主题公开为“公共接口”,然后外部消费者(或生产者)可以连接到它。可能吗?
我听说如果我想在内部和外部网络中使用集群会有问题,因为很难配置adverted.host.name。真的吗?
我也必须暴露动物园管理员吗?我认为新的消费者/生产者 API 不再需要它。
kafka适合上网吗?
更准确地说,我想要的是将 kafka 主题公开为“公共接口”,然后外部消费者(或生产者)可以连接到它。可能吗?
我听说如果我想在内部和外部网络中使用集群会有问题,因为很难配置adverted.host.name。真的吗?
我也必须暴露动物园管理员吗?我认为新的消费者/生产者 API 不再需要它。
由于这些原因,我个人不会通过 TCP 将 Kafka 服务器直接暴露给客户端,仅举几例:
当然,所有这些考虑因素也可以使用与 Kafka 服务器的 TCP 直接连接来正确解决,但我个人会使用不同的解决方案。
Kafka 的有线协议是基于 TCP 的,可以在公共互联网上正常工作。在最新版本的 Kafka 中,您可以为内部和外部流量配置多个接口。生产环境中的 Internet 上 Kafka 示例包括来自 Heroku、IBM MessageHub 和 Confluent Cloud 的多个 Kafka 即服务产品。
如果 Kafka 客户端使用新的消费者 API,则不需要公开 zookeeper。
您还可以选择公开 REST 代理(例如开源 Confluent REST 代理)作为对客户端防火墙更友好的接口,因为它通过 HTTP(S) 运行并且不会被大多数公司或个人防火墙阻止。
可以通过 Internet 公开 Kafka(事实上,这就是 Aiven 和 Instaclustr 等托管 Kafka 提供商赚钱的方式),但您必须确保它得到充分保护。至少:
allow *
使用端口 9092(或您配置代理侦听的任何端口);只需确保其他端口已关闭。要记住的另一件事:并非所有工具都支持 SASL/SSL 连接,并且某些工具实际上需要连接到 ZooKeeper 节点(在上述设置中无法访问)。确保您依赖的任何工具都使用直接连接到 Kafka 代理的“新”样式,并且不需要 Zookeeper 连接。
除了配置客户端 TLS 之外,代理还必须拥有我们试图避免的公共 IP。通常对于其他服务,我们将所有内容隐藏在负载均衡器后面。卡夫卡可以做到这一点吗?
当您需要 java 生产者客户端的高性能批处理时,我不确定托管在公共服务器上的 Confluent REST 代理是否是一个真正的选择。