我有一个kafka主题“mytopic”,有10个分区,我想使用s3 sink connector将记录放入s3 bucket。为了便于扩展,它应该在多个节点上运行,以便将分区数据并行地写入同一个s3 bucket。
在kafka connect用户指南和许多其他博客/教程中,建议在分布式模式下运行workers,而不是独立运行workers,以实现更好的可扩展性和容错性:
... 分布式模式在可伸缩性方面更加灵活,并提供了高可用性服务的附加优势,以最大限度地减少停机时间。
我想弄清楚为我的用例选择哪种模式:让一个逻辑连接器在多个节点上并行运行。我的理解如下:
如果我在分布式模式下运行,我最终将只有一个工人处理所有分区,因为它被认为是一个连接器任务。
相反,我应该在多个节点中以独立模式运行。在这种情况下,我将拥有一个使用者组并实现分区的并行处理。
在上面描述的独立场景中,我实际上具有容错能力:如果一个示例死亡,使用者组将重新平衡,其他独立工作者将处理释放的分区。
我的理解是正确的还是遗漏了什么?
不幸的是,除了这次googlegroups讨论之外,我找不到更多关于这个主题的信息,在这次讨论中,作者得出了和我一样的结论。
2条答案
按热度按时间kq4fsx7k1#
从理论上讲,这可能是可行的,但最终您将通过ssh连接到多台计算机,拥有基本相同的配置文件,并且不使用
connect-distributed
命令而不是connect-standalone
.但是,您缺少了关于连接服务器任务重新平衡的部分,该部分通过连接服务器rest端口进行通信
底层任务代码都是相同的,只是入口点和偏移存储不同。所以,如果你有多台机器,为什么不直接使用分布式呢?
rqdpfwrv2#
你不需要运行,多个示例的独立进程,Kafka工人负责分配任务,重新平衡,偏移管理下的分布式模式,你需要指定相同的组id。。。