我已经设置了一个MirrorMaker集群,该集群使用来自世界各地的集群的主题。
问题是镜像集群(位于欧盟)和源集群(位于美国)之间的延迟会导致偏移滞后的大量峰值。
镜像消耗了9个主题,每个主题由24个分区组成。
/opt/kafka/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config /opt/kafka/config/us1.consumer.properties --num.streams 48 --producer.config /opt/kafka/config/glb.producer.properties --whitelist="a,b,c,d,e,f,g,h,i"
producer.properties
Settingsbootstrap.servers=localhost:9092
acks=-1
retries=2147483647
client.id=us.mm.producer
batch.size=200
linger.ms=10
我正在努力增加批量大小并引入挥之不去以尝试增加吞吐量,但到目前为止,我的努力都失败了。
什么是理想的批量大小的最佳方法,并引入一个linger.ms
将有用如此高的延迟率?
抱歉,如果这看起来模糊,但我是Kafka的新手,调整服务器很难。
为了调整生产者设置,我建议按照本幻灯片中描述的方法开始:https://www.slideshare.net/JiangjieQin/producer-performance-tuning-for-apache-kafka-63147600
但是,由于镜像制造商正在目标集群中运行,我怀疑瓶颈可能是来自源集群(US-> EU)的消耗,而不是生成与镜像制造商位于同一位置的目标集群,如果我理解正确的话。
首先 - 你看到多少延迟?
延迟还取决于数据吞吐率。在我的情况下,每秒10k事件,4 KB记录(记录的大小也很重要)。我观察到生产者平均延迟为1.5毫秒,最大延迟为3.5毫秒,有100万EPS,我观察到生产者平均延迟为3.5毫秒,最大延迟接近30秒(非常高)
这取决于很多因素。整体延迟=网络延迟(可以使用Ping的一个美国方框进行检查,它会给你RTT)+ Mirror Maker Latency(Confluent replicator cliams它引入了16ms,我们可以期待或多或少的Apache Kafka镜像制造商)
还检查一下,
Producer buffer memory - default is 32 MB.
acks recommendation is 1 (i.e. leader+ 1 follower) o.w it will more delays.
socket buffer
send.buffer.bytes
receive.buffer.bytes
num.network.threads
num.io.threads
我没有在你的配置中重试。是否启用了压缩?