为什么分区?
kafka有topic的概念,它是承载真实数据的逻辑容器,而在主题之下还分为若干个分区,也就是说kafka的消息组织方式实际上是三级结构:主题-分区-消息。主题下的每条消息只会保存在某个分区中,而不会在多个分区中被保存多份。
其实分区的作用就是提供负载均衡的能力,不同的分区能够被放置在不同节点的机器上,而数据的读写操作也都是针对分区这个粒度进行的,这样每个节点的机器都能够独立地执行各自分区的读写请求处理。并且,我们还可以通过添加新的节点机器来增加整体系统的吞吐量。
分区策略
所谓的分区策略是决定生产者将消息发送到哪个分区的算法。
如果要自定义分区策略,你需要显示地配置生产者端的参数partitioner.class。
packagekafka;importorg.apache.kafka.clients.producer.KafkaProducer;importjava.util.Properties;public classKafkaProduce {public void kafkaProducer() throwsException {
Properties pro= newProperties();
......// 其他配置
pro.put("partitioner.class", "kafka.KafkaPartitioner");
KafkaProducer config=