2017-05-25 101 views
2

我们正在设计一个Kafka集群(至少3个节点),它将处理来自Web服务器阵列的事件。由于日志大部分相同,因此我们计划仅创建一个主题(例如 - webevents)负载平衡1主题Kafka集群

我们期望来自服务器的大量流量。由于只有一个主题,所以会有一个单独的领导者经纪人。在这种情况下,集群如何平衡高流量?所有写入请求将始终始终路由到领导代理,其他节点可能未充分利用。

外部硬件平衡器是否有助于解决此问题?或者,Kafka配置可以帮助在1个主题的群集上平均分配写请求吗?

感谢, Sharod

回答

6

简短的回答:一个主题可以有多个分区,每个分区,没有话题,有一个领导者。领导者平均分布在经纪人中间。所以,如果你的话题中有多个分区,你将有多个领导者,你的写作将平均分配给经纪人。

您将拥有一个拥有大量分区的主题,您可以复制分区以实现数据的高可用性/持久性。

每个代理将保存均匀分布数量的分区,并且这些分区中的每一个都可以是主题的领导者或副本。卡夫卡生产者(在您的案例中运行在您的网络服务器上的卡夫卡客户端)写信给一位领导者,这提供了一种负载平衡生产的方式,以便每一次写入都可以由单独的经纪人和机器提供服务。

生产者做负载均衡选择每个消息的目标分区。它可以基于消息密钥完成,因此具有相同密钥的所有消息都会转到同一个分区,或者如果您未设置消息密钥,则采用循环方式。

enter image description here

看看this不错的职位。我从那里拿走了图表。

+0

谢谢澄清。很好的答案。 – Sharod

+0

谢谢@Sharod,如果您对答案感到满意,请接受它作为最佳答案。您也可以在接受其他答案之前等待其他答案,但请接受其中之一。 –

+0

非常有用的答案。 –