首页我们要了解kafka为什么要在topic里加入分区的概念?topic是逻辑的概念,partition是物理的概念,对用户来说是透明的。producer只需要关心消息发往哪个topic,而consumer只关心自己订阅哪个topic,并不关心每条消息存于整个集群的哪个broker。
为了性能考虑,如果topic内的消息只存于一个broker,那这个broker会成为瓶颈,无法做到水平扩展。所以把topic内的数据分布到整个集群就是一个自然而然的设计方式。Partition的引入就是解决水平扩展问题的一个方案。
我们可以把每个partition认为是一个无限长度的数组,新数据顺序追加进这个数组。物理上,每个partition对应于一个文件夹。一个broker上可以存放多个partition。这样,producer可以将数据发送给多个broker上的多个partition,consumer也可以并行从多个broker上的不同paritition上读数据,实现了水平扩展。
分区配置
修改 server.properties
vim /usr/local/kafka/config/server.properties num.partitions=3 #默认为每个创建主题自动创建3个分区
或者创建topic时设置
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic klogs
修改已存在topic分区
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic klogs --partitions 3
查看分区信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic klogs
Topic: klogs PartitionCount: 3 ReplicationFactor: 1 Configs: Topic: klogs Partition: 0 Leader: 0 Replicas: 0 Isr: 0 Topic: klogs Partition: 1 Leader: 0 Replicas: 0 Isr: 0 Topic: klogs Partition: 2 Leader: 0 Replicas: 0 Isr: 0
本文地址:https://www.stayed.cn/item/252
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我