我们需要从 Kafka 中提取数据并写入 AWS s3。 Kafka 由单独的部门管理,我们只能访问特定的主题。
根据 Kafka 文档,Kafka Connect 对我来说似乎是一个简单的解决方案,因为我没有任何自定义消息处理逻辑。
通常,当我们运行 Kafka Consumer 时,我们可以使用相同的消费者组运行多个 JVM 以实现可扩展性。特定消费者的消费者JVM可以运行在同一个物理服务器上,也可以运行在不同的物理服务器上。当我想使用 Kafka Connect 时会出现什么情况?
假设我有 20 个主题分区。
如何运行 20 个实例的 Kafka Connect?
我可以在同一个物理实例上运行多个 Kafka Connect 实例吗?
最佳答案
Kafka Connect 负责平衡所有工作线程的负载。在 20 个节点的示例中,您可以:(例如)
- 1 个 Kafka Connect 工作线程,处理 20 个分区
- 5 个 Kafka Connect 工作线程,每个处理 4 个分区
- 20 个 Kafka Connect 工作线程,每个处理 1 个分区
这取决于您的数量和所需的吞吐量。
要跨多个节点以分布式模式运行 Kafka Connect,follow the instructions here并确保为它们提供相同的 group.id
,该 ID 将它们标识为同一集群的成员(因此有资格在它们之间分担任务工作量)。分布式模式的更多配置详细信息 here .
即使您在单个节点上运行 Kafka Connect,我个人也建议在分布式模式下运行它,因为它使横向扩展更加简单(您只需添加其他节点,但执行和配置保持不变)。
我没有看到在单个节点上运行多个 Kafka Connect 工作线程有什么好处。每个 Kafka Connect 工作线程可以根据需要运行多个任务和连接器。
关于apache-kafka - 扩展 Kafka Connect 与扩展 Kafka Consumer 相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166359/