美文网首页
【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零基础学习】日志存储

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