kafka 主题和分区的概念
- 主题 Topic
主题 -topic 在 kafka 中是⼀个逻辑的概念,kafka 通过 topic 将音讯进⾏分类。不同的 topic 会被订阅该 topic 的消费者生产。
然而有⼀个问题,如果说这个 topic 中的音讯⾮常⾮常多,多到须要⼏ T 来存,因为音讯是会被保留到 log ⽇志⽂件中的。为了解决这个⽂件过⼤的问题,kafka 提出了 Partition 分区的概念。
2. 分区 Partition
通过 partition 将⼀个 topic 中的音讯分区来存储。这样的益处有多个:
分区存储,能够解决统 - 存储文件过大的问题。
提供了读写的吞吐量: 读和写能够同时在多个分区中进行。
创立多分区的主题:
./kafka-topics.sh –create –zookeeper 127.0.0.1:9093 –replicationfactor 1 –partitions 2 –topic test2
3.kafka 中音讯⽇志⽂件中保留的内容
00000.log: 这个文件中保留的就是音讯
_consumer_offsets-49:
kafka 外部本人创立了_consumer_offsets 主题蕴含了 50 个分区。这个主题用来寄存消费者生产某个主题的偏移量。因为每个消费者都会本人保护着生产的主题的偏移量,也就是说每个消费者会把生产的主题的偏移量自主,上报给 Kafka 中的默认主题:
consumer_ offsets。因而 kafka 为了晋升这个主题的并发性,默认设置了 50 个分区。
提交到哪个分区: 通过 hash 函数: hash(consumerGroupld) %_ consumer_ _offsets 主题的分区数
提交到该主题中的内容是: key 是 consumerGroupld+topic+ 分区号,value 就是以后 offset 的值
文件中保留的音讯,默认保留 7 天。七天到后音讯会被删除。
理解更多 java 培训课程相干技术常识欢送关注小编!