主题
管理
-
创建主题
- localhost:2181 zookeeper所在的ip,zookeeper必传参数,多个zookeeper用,分开
- partitions:用于设置主题分区数,每个线程处理一个分区数据
- replication-factor:用于设置主题副本数,每个副本分布在不同节点,副本数不能超过节点数
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic topicName --partitions partitionNumber
–replication-factor Number -
查看主题
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic topicName
-
删除主题
- 如果delete.topic.enable=true,直接删除topic
- 如果delete.topic.enable=false,
- 如果topic没有使用过即没有传输过信息,可以彻底删除
- 如果有用过,则只是吧topic标记为删除(marked for deletion),重启kafka后删除
-
增加分区(只能加不能减少)
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topicName --partitions partitionName
- 使用kafkaAdminClient
- 可以使用kafkaAdminClient调用api操作kafka,可以集成进自己的系统里
总结
- kafka可以将主题划分为多个分区,会根据分区规则选择把消息存储到哪个分区中,只要如果分区
规则设置的合理,所有的消息会被均匀的分布到不同的分区中,这样就实现了负载均衡和水平扩展,多个订阅者可以从一个
或多个分区中同事消费数据,以支撑海量数据处理能力 - 消息是以追加到分区中的,多个分区顺序写磁盘的总效率要比随机写内存还高,是kafka高吞吐率的重要保证之一