我正在寻找有关Kafka代理基于负载自动缩放的一些建议。
让我们说我们有一个电子商务网站,我们正在捕获某些活动或事件,并将这些事件发送到Kafka。由于在高峰时段,网站流量会更多,因此拥有固定数量的经纪人的理想kafka群集始终不是一个好主意,因此我们希望在网站流量更多时按比例增加经纪人的数量,并缩小规模流量较少时的经纪人数量。
人们如何解决此类问题?我无法在此主题中找到任何资源。任何帮助将不胜感激。
答案 0 :(得分:1)
Kafka并不是真的那样。从集群中添加/删除代理是一个非常实际的过程,它在集群上创建了很多额外的负载/开销,因此您不希望集群本身自动进行扩展或缩减。造成如此多额外开销的主要原因是,添加或删除代理需要在正常流量之上在整个群集中复制大量数据。基本上,来自失效代理的所有数据都需要复制到其他位置,以使主题/分区保持相同的复制因子,或者如果它是新代理,则需要将数据从其他代理中重新整理到其中。总体上减少了集群上的负载。复制所有这些数据会在群集上造成大量IO / CPU负载,这可能足以引起严重的问题。
处理这种情况的最佳方法是使用高峰时段所需流量的2倍甚至3倍进行性能测试和优化,并相应地构建集群。这样,如果突然出现尖峰,您将有足够的净空,而且您不必横向扩展/纵向扩展。
Kafka具有出色的性能,即使每秒处理数百万条消息,因此您可能会发现应用程序/系统所需的群集大小并不像您最初想象的那样大/贵。