谁能帮我在kafka负载平衡?要实现什么逻辑?我认为部署多代理多节点kafka会解决这个问题吗?如果有人可以指导我增加分区可能会影响kafka的负载平衡和吞吐量?
如果你的意思是扩展Kafka集群,你需要做的最低限度是:
- 向集群添加更多代理
- 重新平衡主题和分区
在这里描述:https://kafka.apache.org/documentation/#basic_ops_cluster_expansion
将服务器添加到Kafka集群很容易,只需为它们分配一个唯一的代理id并在新服务器上启动Kafka。但是,这些新服务器不会自动分配任何数据分区,因此除非将分区移动到它们,否则它们在创建新主题之前不会执行任何工作。因此,通常当您向集群添加机器时,您会希望将一些现有数据迁移到这些机器上。
一旦消费者和生产者的分区被移动到新节点上,他们将自动重新平衡以使用新节点。
要了解消费者和生产者如何根据分区数量进行扩展,我建议阅读Kafka关键概念:https://kafka.apache.org/documentation/#intro_concepts_and_terms
主题是分区的,这意味着一个主题分布在许多"bucket"中。位于不同的Kafka代理上。数据的这种分布式放置对于可伸缩性非常重要,因为它允许客户机应用程序同时从多个代理读取和写入数据。当新事件发布到主题时,它实际上被附加到主题的一个分区中。具有相同事件键(例如,客户或车辆ID)的事件被写入相同的分区,并且Kafka保证给定主题分区的任何消费者将始终以与写入相同的顺序读取该分区的事件。