乐趣区

关于java:kafka主题和分区的概念

kafka 主题和分区的概念

  1. 主题 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 培训课程相干技术常识欢送关注小编!

退出移动版