kafka分区策略
kafka分区策略决定producer生产者生产的消息最终会写入到topic的哪个分区中。
kafka分区策略有以下四种
- 指定具体分区号
- 不给定具体分区号,给定key值(key值不断变化)
- 不给定具体分区号,也不给定对应的key
- 自定义分区
实际上kafka还有一种分区策略,即随机分区,因为负载均衡不如轮训,所以很少使用。
kafka默认两种策略,根据是否有key来决定使用哪种
- 不给定具体分区号,给定key值(key值不断变化)
- 不给定具体分区号,也不给定对应的key
kafka自定义有两种策略
- 指定具体分区号
- 自定义分区
指定具体分区号需要在生产者发送消息时指定具体分区的index,很少使用
指定具体分区号
给定具体分区号,数据会写入到指定的分区中
producer.send(new ProducerRecord<String, String>("test", 0,Integer.toString(i), "hello-kafka-"+i));
不给定具体分区号,给定key值(key值不断变化)
不给定具体的分区号,给定key值。一般使用key的hashcode%partition分区数 作为分区号
producer.send(new ProducerRecord<String, String>