Kafka(第三节)Kafka机制解释、配置文件说明、Kafka-eagle安装和使用、Flume与Kafka整合

本文深入探讨Kafka的Log存储、查询机制,包括日志目录结构、offset查找过程和Message物理结构。讲解了Kafka的数据不丢失机制,涉及生产者、Broker和消费者的策略。此外,介绍了Kafka如何在CAP理论中取舍,重点分析了其一致性与可用性。还详述了Kafka配置文件,如Server.properties、producer和consumer配置,并分享了Kafka-eagle的安装和使用步骤,以及Flume与Kafka的整合实践。
摘要由CSDN通过智能技术生成

kafka的log存储以及查询机制

kafka中log日志目录及组成

kafka中log日志目录及组成
kafka在我们指定的log.dir目录下,会创建一些文件夹;名字是【主题名字-分区名】所组成的文件夹。 在【主题名字-分区名】的目录下,会有两个文件存在,如下所示:

#索引文件
00000000000000000000.index
#日志内容
00000000000000000000.log

在目录下的文件,会根据log日志的大小进行切分,.log文件的大小为1G的时候,就会进行切分文件;
在这里插入图片描述
在kafka的设计中,将offset值作为了文件名的一部分
比如:topic的名字为:test,有三个分区,生成的目录如下如下所示:

test-0
test-1
test-2

kafka日志的组成
segment File组成:由两个部分组成,分别为index Fille和data File,此两个文件一一对应且成对出现; 后缀.index和.log分别表示为segment的索引文件、数据文件。

segment文件命名规则:partion全局的第一个segment从0开始,后续每个segment文件名为上一个全局 partion的最大offset(偏移message数)。数值最大为64位long大小,19位数字字符长度,没有数字就用0 填充。
在这里插入图片描述
通过索引信息可以快速定位到message。通过index元数据全部映射到memory,可以避免segment File的IO磁盘操作;
通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间大小。 稀疏索引:为了数据创建索引,但范围并不是为每一条创建,而是为某一个区间创建;
好处:就是可以减少索引值的数量。
不好的地方:找到索引区间之后,要得进行第二次处理。

kafka的offset查找过程

在这里插入图片描述
比如:要查找绝对offset为7的Message:
上图的左半部分是索引文件,里面存储的是一对一对的key-value,其中key是消息在数据文件(对应的log文件)中的编号,比如“1,3,6,8……”,
分别表示在log文件中的第1条消息、第3条消息、第6条消息、第8条消息……,那么为什么在index文件中这些编号不是连续的呢?
这是因为index文件中并没有为数据文件中的每条消息都建立索引,而是采用了稀疏存储的方式,每隔一定字节的数据建立一条索引。
这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中。
但缺点是没有建立索引的Message也不能一次定位到其在数据文件的位置,从而需要做一次顺序扫描,但是这次顺序扫描的范围就很小了。

其中以索引文件中元数据3,4597为例,其中3代表在右边log数据文件中从上到下第3个消息(在全局partiton表示第4597个消息),
其中4597表示该消息的物理偏移地址(位置)为4597。

简单说来就是通过数据的offset值,先找到数据所属的index文件,然后通过index文件找到数据所在的行,然后找到数据。

kafka Message的物理结构及介绍

在这里插入图片描述

kafka当中的数据不丢失机制

生产者生产数据不丢失

生产者数据不丢失过程图

在这里插入图片描述

发送数据方式

可以采用同步或者异步的方式-过程图
在这里插入图片描述
可以采用同步或者异步的方式
同步:发送一批数据给kafka后,等待kafka返回结果

1、生产者等待10s,如果broker没有给出ack相应,就认为失败。
2、生产者重试3次,如果还没有响应,就报错

异步:发送一批数据给kafka,只是提供一个回调函数。

1、先将数据保存在生产者端的buffer中。buffer大小是2万条
2、满足数据阈值或者数量阈值其中的一个条件就可以发送数据。
3、发送一批数据的大小是500条

ack机制(确认机制)

生产者数据发送出去,需要服务端返回一个确认码,即ack响应码;ack的响应有三个状态值

0:生产者只负责发送数据,不关心数据是否丢失,响应的状态码为0(数据丢失,需要再次发送)
1:partition的leader收到数据,响应的状态码为1
-1:所有的从节点都收到数据,响应的状态码为-1

在这里插入图片描述

说明:如果broker端一直不给ack状态,producer永远不知道是否成功;producer可以设置一个超时时间10s,超过时间认为失败。

kafka的broker中数据不丢失

在broker中,保证数据不丢失主要是通过副本因子(冗余),防止数据丢失。Kafka的副本机制不是完全的副本机制(副本中的数据和真实的数据是有区别的,只是将部分数据备份到副本中)。

消费者消费数据不丢失

在消费者消费数据的时候,只要每个消费者记录好offset值即可,就能保证数据不丢失。

CAP理论以及kafka当中的CAP机制

分布式系统当中的CAP理论

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。
分布式系统的最大难点,就是各个节点的状态如何同步。
为了解决各个节点之间的状态同步问题,在1998年,由加州大学的计算机科学家 Eric Brewer 提出分布式系统的三个指标,分别是

  • Consistency:一致性
  • Availability:可用性
  • Partition tolerance:分区容错性

Eric Brewer 说,这三个指标不可能同时做到。最多只能同时满足其中两个条件,这个结论就叫做 CAP 定理
CAP理论是指,分布式系统中,一致性、可用性和分区容忍性最多只能同时满足两个。

一致性:Consistency

• 通过某个节点的写操作结果对后面通过其它节点的读操作可见
• 如果更新数据后,并发访问情况下后续读操作可立即感知该更新,称为强一致性
• 如果允许之后部分或者全部感知不到该更新,称为弱一致性
• 若在之后的一段时间(通常该时间不固定)后,一定可以感知到该更新,称为最终一致性

可用性:Availability

• 任何一个没有发生故障的节点必须在有限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值