kafka broker

zookeeper中存储的kafka信息

在这里插入图片描述

kafka broker总体工作流程

  1. Kafka集群中有一个broker的Controller会被选举为Controller Leader,负责管理集群broker的上下线,所有topic的分区副本分配和Leader选举等工作
  2. Controller的信息同步工作是依赖于Zookeeper的
  3. Zookeeper中记录了谁是Leader,kafka2.8以后也可以配置不采用zookeeper,通过Kraft进行自己的集群管理,使用Kraft内部的Quorum控制器来取代ZooKeeper

在这里插入图片描述

若leader发生故障

在这里插入图片描述

kafka 副本

  1. Kafka中副本分为:Leader和Follower。Kafka生产者只会把数据发往Leader,然后Follower找Leader进行同步数据
  2. Kafka默认1个副本,生产环境一般配置为2个,进而来保证数据可靠性
  3. Kafka分区中的所有副本统称为AR(Assigned Repllicas) AR = ISR + OSR

ISR,意为和leader保持同步的follower集合。当ISR中的follower完成数据的同步之后,leader就会给producer发送ack,如果follower长时间未向leader同步数据,则该follower将被踢出ISR,该时间阈值由replica.lag.time.max.ms参数设定(默认30s)

OSR,表示Follower与Leader副本同步时,延迟过多的副本

kafka Leader和Follower故障处理

在这里插入图片描述

Follower故障处理细节

在这里插入图片描述

Follower故障处理细节

在这里插入图片描述

kafka 文件存储机制

在这里插入图片描述
1、 Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的

2、topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。Producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费

3、由于生产者生产的消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment(1G)。每个segment对应两个文件——“.index”文件“.log”文件

4、“.index”文件存储大量的索引信息(稀疏索引),“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中message的物理偏移地址

log文件和index文件详解:

在这里插入图片描述

Kafka中默认的日志保存时间为7天,可以通过调整如下参数修改保存时间

log.retention.hours,最低优先级小时,默认7天
log.retention.minutes,分钟
log.retention.ms,最高优先级毫秒
log.retention.check.interval.ms,负责设置检查周期,默认5分钟

那么日志一旦超过了设置的时间,怎么处理呢?

Kafka中提供的日志清理策略有delete和compact两种

  1. delete日志删除:将过期数据删除
log.cleanup.policy = delete    所有数据启用删除策略

(1)基于时间:默认打开。以segment中所有记录中的最大时间戳作为该文件时间戳
(2)基于大小:默认关闭。超过设置的所有日志总大小,删除最早的segment

log.retention.bytes,默认等于-1,表示无穷大

思考:如果一个segment中有一部分数据过期,一部分没有过期,怎么处理?

在这里插入图片描述
2. compact日志压缩

在这里插入图片描述

kafka 高效读写数据原因

(1)Kafka本身是分布式集群,可以采用分区技术,并行度高
(2)读数据采用稀疏索引,可以快速定位要消费的数据
(3)顺序写磁盘
Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到600M/s,而随机写只有100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间
(4)页缓存 + 零拷贝技术

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值