kafka工作流程及文件储存机制

kafka工作流程

生产者和消费者面向的都是topic,topic分成多个分区,每个分区都有多个副本,每个分区副本中只有一个leader,多个follower。生产者和消费者只与分区的leader沟通,生产者通过分区器把一批一批的消息分到各个不同的分区,之后follower去实时同步leader信息。然后消费者就可以去找leader获取消息。

每个partition对应于一个log文件,producer生产的数据会不断被追加到该文件末端,且每条数据都有自己的offest。消费者组中每个消费者,都有实时记录自己消费到了哪个offset,即使出错恢复时,也能找到上次的位置继续消费。

文件储存机制

为了防止log文件过大导致数据定位效率低下,kafka采取了分片和索引机制,即将每个partition分成多个segment。每个segment对应两个文件------".index"和“.log”文件。(log)

topic是逻辑上的概念,而partition是物理上的概念。
kafka工作流程及文件储存机制_第1张图片
这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号。例如,first这个topic有三个分区,则其对应的文件夹为first-0,first-1,first-2。kafka工作流程及文件储存机制_第2张图片
index和log文件以当前segment的第一条消息的offset命名。
kafka工作流程及文件储存机制_第3张图片

你可能感兴趣的:(大数据)