为了平滑所有Kafka分区之间的流量,我尝试在我的生产者上创建一个自定义分区器(扩展kafka.producer.Partitioner)来替换只每10分钟更改一次分区的默认分区器。
我的分区程序使用简单的循环算法每隔200条消息从一个分区切换到另一个分区。由于生产者配置了batch.num.messages = 200和producer.type = async,流量应该每隔200条消息从一个分区跳到另一个分区,也就是说每个生产者的请求。据我了解,考虑到请求的数量,这不应该修改经纪人的输入流量。
但是,经过一些测试后,使用此自定义分区程序时似乎请求量乘以2。
为什么我们这样增加?有没有办法解决这个问题,或者至少是一种限制流量增加的方法?
感谢您的帮助。
注意:我使用的是Kafka 0.8.2-beta,生成器以scala 2.10编码