这篇文章主要记录自己遇到和在网上看到的一些关于kafka的相关问题。
问题1:客户端和服务端版本不一致造成的消息发送延迟高现象
kafka客户端支持多语言api,这里只关注Java客户端,如下两种方式:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>0.10.2.0</version> </dependency>
这样会引入Java和scala两种依赖,如果只引入Java可以采用下面这种方式:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.2.0</version> </dependency>
回到问题:分区Leader在进行分区数据写入的时候,为保证数据的完整性,会对分区进行加锁,同时在锁块中会有一个压缩的操作,而客户端和服务端消息版本协议不一致的话,就会造成服务端需要将客户端发送的数据解压、重新计算点位,然后再压缩的一个过程,这个过程是比较耗费性能的,就会造成其他对该分区写入的线程一直等待,从而产生较高延迟。
具体分析可参考:https://www.codingw.net/Article?id=778
标签:总结,Java,分区,kafka,问题,2.0,服务端,客户端 From: https://www.cnblogs.com/jing-yi/p/16824686.html