我想运行一个本地 Kafka Connect (KC) 集群,它将运行多个不同的“源”和“接收器”连接器。目前在测试配置中,我将 KC 集群扩展到 3 个实例,每个实例消耗大约 60G 的堆内存。
对于如何有效扩展 Kafka Connect 实例有什么建议吗? 例如每个 KC 实例推荐的 CPU/RAM 数量? 最大实例数 ?
没有最佳实践,因为这完全取决于您使用的连接器。
例如,S3/HDFS sink buffer data in memory,所以heap size预计会很大。同样对于接收器连接器,您不能将它们的任务扩展到它们的主题的分区数之外。对于 JDBC/Debezium 源,每个源表不能有多个任务...
如果您只是问如何管理它的扩展,那么假设您没有使用 Kubernetes,像 Ansible/Terraform 这样的配置管理可以提供帮助。
就我个人而言,我已经管理了一个多达 30 个节点的集群,每个服务器可能有 64G 的 RAM?我忘记了 EC2 类型,但我们需要在每个假日季节再扩展几个节点来处理负载,所以现在它可能是一个更大的集群
我不建议从 Xmx=60G 开始,因为垃圾收集可能会导致问题。您需要设置 JVM 监控并跟踪实际的堆使用情况