Kafka的原理深入理解

1. 分区(Partition)的leader 和 follower

简介: 在Kafka中每一个大的topic被分为多个区(并且在不同的主机上,分布式嘛!!)以及多个副本(副本机制,数据的安全性考虑)。
每个分区都有一个leader以及0个或者多个follower,在创建topic时,Kafka会将每个分区的leader均匀地分配在每个broker上。所有的读写操作都是由leader处理,而所有的follower都复制leader的日志数据文件,如果leader出现故障时,follower就会被选举为leader(宕机选取机制).所以:

  • Kafka中的leader负责处理读写操作,而follower只负责副本数据同步
  • 如果leader出现故障,其他follower会被重新选举为leader
  • follower像一个consumer一样,拉取leader对应分区的数据,并保存到日志数据文件中

在这里插入图片描述

  • AR: 分区的所有副本称为 「AR」(Assigned Replicas——已分配的副本)
  • ISP: 所有与leader副本保持一定程度同步的副本(包括 leader 副本在内)组成 「ISR」(In-Sync Replicas——在同步中的副本)
  • OSR: 由于follower副本同步滞后过多的副本(不包括 leader 副本)组成 「OSR」(Out-of-Sync Replias)
  • AR = ISR + OSR
  • 正常情况下,所有的follower副本都应该与leader副本保持同步,即AR = ISR,OSR集合为空
    在这里插入图片描述

2. leader选举(Controller选举)

简介: Kafka启动时,会在所有的broker中选择一个controller

在这里插入图片描述

3. Kafka生产、消费数据工作流程

  • Kafka生产者写入数据流程
    在这里插入图片描述

  • Kafka消费者读取(拉取)数据流程:
    在这里插入图片描述

  1. 每个consumer都可以根据分配策略(默认RangeAssignor),获得要消费的分区
  2. 获取到consumer对应的offset(默认从ZK中获取上一次消费的offset)
  3. 找到该分区的leader,拉取数据
  4. 消费者提交offset

4. Kafka的数据存储形式(机制)

在这里插入图片描述

  1. 一个topic由多个分区组成
  2. 一个分区(partition)由多个segment(段)组成
  3. 一个segment(段)由多个文件组成(log、index、timeindex)

在这里插入图片描述
在这里插入图片描述

4. Kafka消息物理结构

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值