美文网首页
【Kafka零基础学习】日志存储

【Kafka零基础学习】日志存储

作者: 文竹小二 | 来源:发表于2018-07-31 22:53 被阅读14次

1、消息流转过程

下图演示了一个简单的Kafka消息流转过程。
Kafka Produce仅发送包含有topic为staff,partition为0的Client Request到Kafka Broker,关于Client Request格式的详细组成,可参考我的另一篇文章“Broker Produce一张图详(https://www.jianshu.com/p/2606b42d7f7e
)”。经过Kafka Broker的处理后,消息最终被追加到对应topic 'staff'和partition '0'的Active日志文件中(Active也即最新创建的日志文件)。为了便于查找,每一个日志文件都会对应到一个索引文件。

image.png

2、Broker大致处理过程

上一小节并没有说明如何处理ClientRequest的,大致处理流程如下。


image.png

2.2、Log

一个Log对象对应一个partition,Log对象中包含多个LogSegment。一个LogSegment对象对应一个log和index文件组合。一个FileMessageSet对象对应一个Log文件。一个OffsetIndex对象对应一个Index文件。

Broker处理逻辑会根据topic和partition找到消息对应的Log对象,并调用Log.append方法去追加消息。Log对象在真正追加消息前,需要筛选出合法的Messages,并将合法消息转换成ByteBufferMessageSet对象。Log对象查找Active的LogSegment对象,并调用LogSegment.append。

2.3、LogSegment

在LogSegment.append中主要做两件事。第一件事,检查是否满足追加索引文件的条件,若满足则调用OffsetIndex.append。另外一件事,调用FileMessageSet.append追加消息。

2.4、FileMessageSet

追加消息到active的日志文件中。

2.5 OffsetIndex

追加索引到active的索引文件中。

相关文章

  • 【Kafka零基础学习】日志存储

    1、消息流转过程 下图演示了一个简单的Kafka消息流转过程。Kafka Produce仅发送包含有topic为s...

  • Kafka 日志存储

    Kafka 中的底层存储设计 Segment 是kafka文件存储的最小单位 日志存放目录 kafka_2.10...

  • Kafka 日志存储、清理规则、消息大小估算

    kafka的日志: kafka消息存储在kafka集群中(分parition存储,每个partition对应一个目...

  • kafka存储结构以及Log清理机制

    本文主要聚焦 kafka 的日志存储以及日志清理相关。 日志存储结构 首先我们来看一张 kafak 的存储结构图。...

  • 仿照Kafka,从零开始自实现 MQ

    仿照Kafka,从零开始自实现 MQ,实现了 Kafka 中 80% 的基础功能。学习 Kafka 的话如果只是看...

  • kafka学习(5) 日志存储

    文件目录布局 如果分区规则设置的合理, 所有消息可以均匀分布到不同的分区中, 如果不考虑多副本, 一个分区对应一个...

  • Kafka高级特性解析(三)

    Kafka高级特性解析(三) 物理存储 日志存储概述 Kafka 消息是以主题为单位进行归类,各个主题之间是彼此独...

  • Kafka 日志存储

    在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafk...

  • Kafka 日志存储

    在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafk...

  • Kafka专题:4.kafka存储层

    kafka的存储层主要包含 分区,副本,日志,日志分段这些概念,以问答的形式来描述 1.为什么kafka的每一个主...

网友评论

      本文标题:【Kafka零基础学习】日志存储

      本文链接:https://www.haomeiwen.com/subject/tschvftx.html