存储方式
物理上把 topic 分成一个或多个 patition(对应 server.properties 中的 num.partitions=3 配置),每个
patition 物理上对应一个文件夹(该文件夹存储该 patition 的所有消息和索引文件),如下:
存储策略
无论消息是否被消费,kafka 都会保留所有消息。有两种策略可以删除旧数据:
1)基于时间:log.retention.hours=168
2)基于大小:log.retention.bytes=1073741824
需要注意的是,因为 Kafka 读取特定消息的时间复杂度为 O(1),即与文件大小无关, 所以这里删除过期文件
与提高 Kafka 性能无关。
kafka在Zookeeper 中的存储结构
注意:producer 不在 zk 中注册,消费者在 zk 中注册。