浅谈大数据里的Kafka(2)工作流程及文件存储机制

Kafka工作流程图
   Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。
   topic是逻辑上的概念(可以自己定义),而partition是物理上的概念(可以将一个topic的内容分配到不同节点上的物理磁盘中),每个partition对应于一者log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。

   Kafka文件存储机制
在这里插入图片描述
   Kafka的文件存储机制,主要是以Topic为对象,将topic进行partition分区,每个partition都会对于一个log文件,由于生产者生产的消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment每个segment对应两个文件——“.index”文件和“.log”文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号。例如,first这个topic有两个个分区,则其对应的文件夹为first-0,first-1。
分区文件

first-0下的log和index文件

   当log数据过大时(假设当数据到offset=5时达到上限)Kafka则采用分片和索引机制

   进行切分以后first-0分区下则会多出对对应的log和index文件:
   00000000000000000006.index
   00000000000000000006.log
   00000000000000000006.timeindex
   该三个文件则对应一个segment
   index和log文件以当前segment的第一条消息的offset命名

   在partition的文件里面,“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中message的物理偏移地址。

   当消费者客户端消费数据的时候,由于consumer在消费过程中可能会出现断电宕机等故障,consumer恢复后,需要从故障前的位置的继续消费,所以consumer需要实时记录自己消费到了哪个offset,以便故障恢复后继续消费。所以当某节点消费数据时,会在以分区文件(first_partition_number)相同的目录下会产生**__consumer_offsets**文件

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值