示例用例:
我有下面的用例作为例子,但是,这个问题是关于一个更通用的方法。
有一个clickstream事件(1kb负载/事件)。这条小溪一整天都很活跃。
在一天的某些时段,交通流量相当大,而在某些时段,交通流量极低。在一天剩下的时间里,交通或多或少是稳定的。
数据从这个集群中被消耗,并被传送到下游系统。
现有集群的大小是固定的,并根据最大流量进行定制。
只有一个主题有许多分区
现在,无论是经纪人还是消费者,在非高峰时段都存在许多与成本和运营相关的问题。这就是为什么我在寻找一个自动缩放的解决方案,在非高峰时间缩小,在高峰时间扩大。
当前理解:
根据我的理解,要在高层次上扩展Kafka集群,需要完成以下步骤:,
启动新服务器(现有集群可以访问的物理节点)。
在它们上面安装kafka(考虑这里的开源发行版)。
为互连配置zk.props和server.props配置,分配唯一的broker id等,并启动zk和server进程以连接到现有集群。
手动触发分区/主题的重新平衡(使用脚本)跨这个集群(包含旧节点和新节点)。
在这里,步骤1到3仍然可以通过一些努力实现自动化,但是步骤4涉及大量开销,因为它涉及从所有代理到新代理的数据传输,以便重新平衡。
像confluent和amazon这样的公司以及他们的托管服务,比如amazon msk和confluent cloud,允许kafka集群的自动弹性伸缩,以满足繁重的工作负载,而几乎不需要任何开销。
我知道这些研究可能是专有的,但我想了解通过这些托管服务实现kafka代理的低延迟/低开销自动伸缩背后的方法。
已经检查过这个问题了。
暂无答案!
目前还没有任何答案,快来回答吧!