kafka生产者发送分区策略

1、在指明partition的情况下,直接将指明值作为partition值,如partition=0,所有数据将写到分区0

2、没有指明partition值但有key的情况下,将key的哈市值与topic的partition数量取余得到partition。如:key1的hash值为5,key2的hash值为4,分区数量为2,则key1对应的value值写入到分区1里面,key2对应的value值写到分区2里面。

3、既没有partition确定值,又没有key的情况下。kafka采用sticky partition(黏性分区器),会随机选择一个分区,并尽可能一直使用该分区。待该分区的batch已满或者已完成,kafka在随机一个分区进行使用。

  例如:第一次随机选择分区器为0,等0号分区当前批次满了(默认16k)或者linger.ms设置的时间到,kafka再随机选择一个分区进行使用(如果还是0会继续随机)。

posted @ 2022-03-04 10:38  苦逼的1024  阅读(283)  评论(0)    收藏  举报