作者回复: 嗯嗯,请求版本号偏底层的设计了,一般用户用不到。其实客户端和服务器端版本的差异很大一部分也是请求版本号的差异
作者回复: 1. 其实我也没太明白您的意思:) “旧版本的服务端不适用新版本的客户端 所以建议保持一致”,不是挺自然的结论吗。。。。
2. 客户端也有版本号,和broker端是一样的。比如Java客户端,如果我们使用Gradle的话,就类似于这样:
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.2.1'
作者回复: 嗯嗯,之前在做咨询的时候发现过两个问题:1. 很多人碰到的问题实际上已经是新版本解决的bug;2. 客户端/服务器端版本不一致导致的性能问题
因此觉得写一篇版本的文章还是有点必要的。
作者回复: 1. Kafka提供了命令行脚本可以执行producer和consumer的性能测试,主要指标还是TPS,延时
2. 增加broker很简单,也不会对现有业务有影响。关键是做好迁移计划——比如避开业务高峰时刻,如果迁移对业务影响最小
作者回复: 嗯嗯,可以查一下ZooKeeper中是否存在大量session超时的情况。不过还是建议升级吧,听着很像是一个已知的bug。如果暂时不能升级,可以尝试调低replica.fetch.max.bytes的值试试。
作者回复: 不矛盾。保持版本一致是任何时候都要尽力保持的。如果你依然使用0.8.x版本,那么最好使用Scala producer,而不是java producer
作者回复: 嗯嗯,差不多:)
作者回复: 专栏毕竟篇幅有限。如果你想知道V2版本的详细设计,请参考:https://www.cnblogs.com/huxi2b/p/7126410.html
作者回复: 如果使用0.8.2.2,那么使用老版本的consumer和producer,不要使用新版本的客户端。它们此时还有很多bug。我是这个意思。。。。
作者回复: 最好多给一些信息,比如OOM是哪部分内存溢出了。另外是否启用了Kafka Security等,还有就是是否频繁地创建KafkaProducer实例?