Kafka(5)消息存储

2020-08-25  本文已影响0人  正义的杰克船长

一、前言

Kafka 对消息的存储和缓存严重依赖于磁盘文件系统。人们对于“磁盘速度慢”的普遍印象,使得人们对于持久化的架构能够提供强有力的性能产生怀疑。事实上,磁盘的速度比人们预期的要慢的多,也快得多,这取决于人们使用磁盘的方式。而且设计合理的磁盘结构通常可以和网络一样快。Kafka采用顺序磁盘访问技术、紧凑的字节结构设计、页缓存以及零拷贝等技术保证了系统的高性能、低延迟、良好的扩展(50kb和50TB的数据在Kafka server上的表现是一致的)。

二、文件目录结构

日志文件逻辑关系图 日志目录

其中第二个日志分段名称为“00000000000000618900”表示该日志分段的第一条消息的偏移量为618900。

三、日志清理

3.1 日志删除策略(delete)

3.1.1 基于保留时间删除

3.1.2 基于日志大小删除

3.2 日志压缩策略(compact)

脏数据比例 = LogHead部分的日志占用大小 / 总共日志大小。

3.3 日志清理其他参数

log.cleaner.backoff.ms
log.cleaner.io.buffer.load.factor

四、磁盘存储设计

4.1 顺序磁盘访问

4.2 页缓存

4.3 零拷贝

非零拷贝数据传输 零拷贝数据传输 Kafka客户端写数据到broker方法

五、结语

Kafka独特的文件结构设计,灵活的日志清理策略,并采用顺序磁盘访问、页缓存以及零拷贝等技术保证了系统的高吞吐、低延迟、易扩展、分布式存储能力。

上一篇 下一篇

猜你喜欢

热点阅读