深入浅出理解kafka原理系列之:主题、分区和副本
一、分区的概念
通过partition将一个topic中的消息分区来存储。
- 分区存储,可以解决统一存储文件过大的问题
- 提供了读写的吞吐量:读和写可以同时在多个分区中进行
- 可以分布式存储
- 可以并行写
二、创建多分区和多副本的主题
kafka-topics.sh --create --zookeeper bigdata1:2181 --replication-factor 2 --partitions 3 --topic test
Created topic test.
三、kafka中消息日志文件中保存的内容
- 00000.log:这个文件保存的就是消息
- _consumer_offsets-49:kafka内部创建了__consumer_offsets主题包含了50个分区。因为__consumer_offsets可能会接收高并发的请求,kafka默认给其分配50个分区(可以通过offsets.topic.num.partitions设置),可以通过加机器的方式扩大并发
- 定期将自己消费分区的offset提交给kafka内部topic:__consumer_offsets,提交过去的时候,key是consumerGroupId+topic+分区号,value是当前offset的值,kafka会定期清理topic里的消息