栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kafka leader选举过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kafka leader选举过程

前言

通过之前的篇章,我们了解到kafka集群中存在一个leader,这个leader目前来说,通常是谁先注册到zk中,即在broker的ids节点中的第一位,就是leader

但是在某些情况下,比如网络故障、服务器异常宕机时,leader所在的kafka实例可能就挂掉了,一旦出现这种情况,kafka集群将会重新选举出一个leader,下面通过演示来说明写leader选举的完整过程

kafka leader选举过程

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

Controller 的信息同步工作是依赖于 Zookeeper 的,有了之前从ZK中了解各个节点的作用后,下面用一张图说明下ZK的leader选举过程

 

环境准备

1、基于centos7系统搭建的kafka集群(虚拟机环境,或者云服务器)

操作步骤

1、启动4个kafka实例

./bin/kafka-server-start.sh -daemon ./config/server.properties

./bin/kafka-server-start.sh -daemon ./config/server1.properties

./bin/kafka-server-start.sh -daemon ./config/server2.properties

./bin/kafka-server-start.sh -daemon ./config/server3.properties

 

2、创建一个4个分区4个副本的topic

./kafka-topics.sh --zookeeper IP:2181 --create --topic zcy222 --partitions 4 --replication-factor 4

检查下主题创建情况

 然后通过下面的命令展示下主题的完整情况

./kafka-topics.sh --zookeeper IP:2181 --describe --topic zcy22

通过输出的信息,可以看到各个broker上面的副本信息,ISR信息

 

通过上一篇,我们了解到ISR中保存的是各个brokerid的信息,现在按照我们最初的设想,如果停掉第四台节点的kafka服务,理论上讲 ISR列表中为4的信息将会被移除,4后面的其他数据将会往前顺移,接下来我们做下实验验证下猜想

3、停掉第四个节点的kafka服务

 然后再次使用上面的主题描述信息命令查看下当前主题的分区以及ISR情况,我们将上面的那张图拿过来对比下,看看是否可以发现什么

 

很明显,当集群中第四个kafka的实例断掉后,ISR中会将这个服务对应的brokerid剔除掉,从而确保ISR里面存储的一定是当前kafka集群中各个存活的,即可以提供服务的实例

假如这时候,通过人力的干预,再次将第四个kafka服务启动起来,会出现什么情况呢?

4、重启第四个kafka服务

./bin/kafka-server-start.sh -daemon ./config/server3.properties

 这时候,再使用主题描述命令查看下分区leader情况,可以看到ISR中第四个brokerid又加入进来了,我们不妨对比第三步中的信息,看看有何变化

 

很明显,当第四个服务重新启动后,会自动加入到ISR列表中最后一个,即顺序放到最后一个

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号