众所周知,kafka有分区的概念,生产者写入数据到kafka,涉及到数据到底写到哪个分区?
kafka api提供了默认的partitioner函数,具体策略如下:
1、如果生产者写入数据时,指定了具体分区,则使用该分区
2、如果生产者没有指定分区,但是提供了key,partitioner函数会对该key取hash再对topic数量取模以确定分区
3、如果生产者既没有指定分区,也没有提供key,则采用round-robin的方式选取分区
项目中用到filebeat采集数据到kafka,如果filebeat配置文件中配置了round-robin,下游在消费数据时,打印record.key可以发现key=null,每条数据到分区也不一样