我们已经建立了一个三节点的kafka集群,并创建了一个具有复制因子3的主题。我们正在向该集群生成数据,并且看到一些消息花费的时间超过50ms。在进一步分析中,我们发现从经纪人那里获得响应的过程存在延迟,因为我们已经为所有人设置了producer.acks。
将num.replica.fetchers
从1增加到4,我们看到了一些改进。但是,每150条消息中就有1条消息超过50毫秒,我们正在使用同步生成器。但是,当num.replica.fetchers
为1时,每100条消息中有1条消息超过50毫秒。
每分钟,我们向集群生成50万条消息。
我们的机器配置:
RAM: 8 GB
Hard disk type: HDD
No. of processors: 32
这是否是kafka生产者的最佳时间?是否需要调整任何属性以获得最小延迟。
此外,如果我们都具有producer.acks
,那么最短的生产时间是什么?
理论上,您可以尝试压缩或减小批量大小以使请求的大小变小,因此更快。
我不特别认为需要设置所有底座。
您可以将复制因子设置为3,将同步副本的最小值设置为2,然后将acks设置为1,如果代理崩溃,您将有很大的机会不丢失任何数据。
另一个解决方案是仅在代理或与它们物理连接到同一交换机的机器上运行生产者代码,以减少网络延迟。