【问题标题】:Kafka Connector - distributed - load balancing tasksKafka Connector - 分布式 - 负载均衡任务
【发布时间】:2020-01-12 03:21:21
【问题描述】:

我正在运行 Confluent Kafka 的开发环境,Windows 上的社区版,版本 3.0.1-2.11。 我正在尝试在 2 个连接器实例之间实现任务的负载平衡。我正在同一台机器上运行 Kafka Zookepper、服务器、REST 服务和 2 个 Connect 实例。 连接器的属性文件之间的唯一区别是休息端口,因为它们在同一台机器上运行。 我不为连接器偏移、配置、状态创建主题。我是不是该? 我有接收器连接器的自定义代码。

当我为我的接收器连接器创建工作器时,我通过执行 POST 请求来做到这一点

POST http://localhost:8083/connectors

朝向任何正在运行的连接器。检查是否有加载的工作人员在 URL 完成

GET http://localhost:8083/connectors

我的接收器连接器在代码中有 System.out.println() 行,我可以使用这些行在控制台日志中跟踪我的代码输出。 当我的工作人员运行时,我可以看到只有一个连接器实例正在执行代码。如果我终止一个连接器,另一个实例将接管工作人员并恢复执行。然而,这不是我想要的。 我的目标是两个连接器实例都在运行工作代码,以便它们可以在它们之间共享负载。 我试图克服一些开源连接器,看看是否有编写连接器代码的细节,但没有成功。

我做了一些不同的尝试来解决这个问题,但没有成功。 我可以重写我的业务代码来解决这个问题,但我很确定我错过了一些对我来说并不明显的东西。 最近我评论了 Robin Moffatt 对this 问题的回答。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    从它的声音来看,您的自定义代码未正确生成您期望的任务数量。

    • 确保您已在配置中设置tasks.max >1
    • 确保您的连接器正确地为taskConfigs 创建了适当数量的任务

    参考文献:

    【讨论】:

    • tasks.max 始终设置为 10,只是为了确定 ;) 您的第二个要点似乎是一个问题。我会花一些时间检查您指出的链接,看看我做错了什么
    • 好吧,事实证明你指出的 taskConfigs 方法编码错误是问题制造者。基本上只产生了一名工人。 Rufus Nash 博客解释了只有一名工人的 Venafi 连接器,非常有帮助。非常感谢!
    • 我在我的 Windows 机器上运行 Apache Kafka,有两个 Kafka-Connect-Workers(端口 8083、8084)和三个分区(一个复制)。每当我关闭其中一个工作人员时,我都能看到故障转移到其他 Kafka-Connect 工作人员,但由于任务数始终为 ONE,因此没有发生负载平衡。我正在使用带有tasks.max = 6的官方MongoDB-Kafka-Connector(ChangeStream)。即使在数据量更大的情况下,任务计数仍然是一个。我在这里想念什么?我怎么知道只有一个任务正在运行? “/connectors/mongodb-connector/status”:在任务数组中显示单个任务。
    • 嗨罗宾,我开始了一个新问题。链接如下:stackoverflow.com/questions/62761101/…请指导一下?
    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2021-12-07
    • 2023-04-08
    • 1970-01-01
    • 2021-01-10
    相关资源
    最近更新 更多