运行 独立模式与分布式模式下的单个 kafka s3 接收器连接器

Running a single kafka s3 sink connector in standalone vs distributed mode

我有一个包含 10 个分区的 kafka 主题 "mytopic",我想使用 S3 sink connector 将记录汇入 S3 存储桶。出于扩展目的,应该 运行 在多个节点上将分区数据并行写入同一个 S3 存储桶。

在 Kafka connect user guide 和许多其他 blogs/tutorials 中,建议 运行 工作人员在分布式模式下而不是独立模式下实现更好的可扩展性和容错性:

... distributed mode is more flexible in terms of scalability and offers the added advantage of a highly available service to minimize downtime.

我想确定为我的用例选择哪种模式:在多个节点上并行使用一个逻辑连接器 运行ning。我的理解如下:

  1. 如果我 运行 在分布式模式下,我最终将只有 1 个工作人员处理所有分区,因为它被认为是一个连接器任务。
  2. 相反,我应该 运行 在多个节点的独立模式下。那样的话我就有一个消费者组,实现分区的并行处理。
  3. 在上面描述的独立场景中,我实际上具有容错能力:如果一个实例死亡,消费者组将重新平衡,其他独立工作人员将处理释放的分区。

我的理解正确还是我遗漏了什么?

不幸的是,除了 this google groups discussion 之外,我找不到太多关于这个主题的信息,作者在那里得出了与我相同的结论。

从理论上讲,这可能行得通,但您最终会通过 ssh 连接到多台机器,具有基本相同的配置文件,只是不使用 connect-distributed 命令而不是 connect-standalone .

不过,您遗漏了有关 Connect 服务器任务重新平衡的部分,它通过 Connect 服务器 REST 端口进行通信

底层任务代码都是一样的,只是入口点和偏移量存储不同。那么,如果您有多台机器,为什么不直接使用分布式呢?

不需要运行,standalone进程的多个实例,分布式模式下Kafka worker负责分发任务,rebalancing,offset管理,需要指定同一个group编号 ...