大数据-kafka学习——Kafka Broker

Posted 机智兵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据-kafka学习——Kafka Broker相关的知识,希望对你有一定的参考价值。

目录

一、Kafka Broker工作

1.1 、zookeeper中存储的kafka信息

1.2、broker总体工作流程

二、kafka副本

2.1、副本的基本信息

2.2、Leader选举流程

2.3、Leader 和 Follower 故障处理细节

1、Leader故障处理

2、Follower故障处理

一、Kafka Broker工作

1.1 、zookeeper中存储的kafka信息

在zookeeper的服务器端存储的Kafka相关信息:

  • /brokers/ids [0,1,2] 记录有哪些服务器
  • /brokers/topics/first/partitions/0/state    "leader":1,"isr":[1,0,2] 记录谁是Leader,有哪些服务器可用
  • /controller  "brokerid":0  辅助选举Leader

1.2、broker总体工作流程

 

二、kafka副本

2.1、副本的基本信息

  1. Kafka副本作用:提高数据可靠性
  2. Kafka默认副本1个,生产环境一般配置为2个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上的传输,降低效率。
  3. Kafka中副本分为:Leader 和 Follower。Kafka生产者只会把数据发往Leader,然后Follower找Leader进行同步数据
  4. Kafka分区中的所有副本统称为AR(Assigned Repllicas)

        AR = ISR + OSR

        ISR:表示和Leader保持同步的Follower集合,如果Follower长时间未向Leader发送通信请求或者同步数据,则该Follower将被踢出ISR。该时间阈值由replica.lag.time.max.ms参数设定,,默认30s。Leader发生故障之后,就会从ISR中选举新的Leader。

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

2.2、Leader选举流程

        Kafka集群中有一个broker的Cntroller会被选举为Controller Leader,负责管理集群broker的上下线,所有topic的分区副本分配和Leader选举等工作。

        Controller的信息同步工作是依赖于Zookeeper的。

 选举规则:在ISR中存活为前提,按照AR中排在前面的优先。
        例如:AR【1,0,2】、ISR【1,0,2】,那么Leader就会按照【1,0,2】进行轮询产生 

2.3、Leader 和 Follower 故障处理细节

LEO(Log End Offset): 每个副本等最后一个offset,LEO其实就是最新的offset+1

HW(High Watermark) :所有副本中最小的LEO

1、Leader故障处理

  1.  Leader发生故障之后,会从ISR中选出一个新的Leader
  2. 为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。

        注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不充分

2、Follower故障处理

       

  1.  Follower发生故障后被临时踢出ISR
  2. 这个期间Leader 和Follower继续接收数据
  3. 待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步
  4. 等该Follower的LEO大于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。

 

 

以上是关于大数据-kafka学习——Kafka Broker的主要内容,如果未能解决你的问题,请参考以下文章

大数据之kafka Broker的工作流程

大数据之kafka Broker的工作流程

大数据学习笔记59:初探Kafka消息系统

大数据学习——SparkStreaming整合Kafka完成网站点击流实时统计

大数据之kafka消费者

大数据之kafka消费者