zookeeper选举kafka集群的controller

news/2024/12/22 11:09:43/

zookeeperkafkacontroller_0">zookeeper选举kafka集群的controller目录


文章目录

  • zookeeper选举kafka集群的controller目录
  • 前言
  • 一、实操体验controller的选举
  • 二、模拟controller选举
  • 四、删除controller节点


前言

kafka集群的controller是kafka集群中一个有特殊作用的broker,负责整个kafka集群的
具体来说,Controller Broker的作用包括:

1‌.主题管理‌:Controller负责创建、删除主题以及增加主题的分区。当使用kafka-topics.sh脚本进行这些操作时,大部分后台工作由Controller完成‌1。
2‌.分区重分配‌:通过kafka-reassign-partitions.sh脚本对主题的分区进行细粒度的分配和管理。这有助于优化分区的分布,提高集群的性能和稳定性‌1。
‌3.Preferred领导者选举‌:为了避免某些Broker过载,Controller负责选举新的Leader副本,确保负载均衡‌1。
‌集群成员管理‌:包括新增Broker、Broker的主动或被动关闭等。当Broker宕机时,4.Controller会感知并处理相应的下线工作,保证集群的稳定性‌1。
‌数据服务‌:Controller存放最全的集群元数据信息,其他Broker会定期接收Controller的更新请求,刷新其元数据缓存,保证数据的一致性和最新状态‌2。
Kafka集群中的Controller Broker通过上述功能,确保了集群的高可用性、数据的一致性和系统的稳定性。


一、实操体验controller的选举

先按照这篇启动kafka集群
kafka-windows集群部署
启动之后 打开zookeeper可视化工具PrettyZoo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时候看到成功启动zookeeper之后 下面的znode节点
开始启动kafka
kafka-windows集群部署
启动了一个kafka的broker1之后,znode出现了一个临时节点controller 并且显示id是1,
说明当前的broker已经被选为controller
在这里插入图片描述
继续启动broker2,broker3
在这里插入图片描述
此时出现了三个id
在这里插入图片描述
但是controller仍然是broker1

二、模拟controller选举

假设我们关闭broker1
在这里插入图片描述
集群的broker都会参与controller的选举,被选举成功的,就接替旧的controller成为新的controller
继续关闭broker2呢?
在这里插入图片描述
剩下的节点会继续竞争,此时就剩下了broker3一个节点

四、删除controller节点

在这里插入图片描述
同样集群会马上监听到变化,马上继续选举出controller
在这里插入图片描述


http://www.ppmy.cn/news/1536451.html

相关文章

freex源码抄写+ue5视频1个+渲染泛读催眠

分三块: 一,freex系列源码抄写。 工作为主,立足本职,再谈发展。 freex的四个模块共计408741行(含空格和注释),如果周一到周四每天300行,周六日开着和平精英抄1000行,那就…

ES postman操作全量修改,局部修改,删除

全量修改 修改需要调用的url 地址是http://192.168.1.108:9200/shopping/_doc/1001,调用方法使用put 只修改指定的需求的内容的请求方式 post方式就是局部修改 http://192.168.1.108:9200/shopping/_update/1001,请求方式post 上图是只修改id 为1001数…

Python | Leetcode Python题解之第456题132模式

题目: 题解: class Solution:def find132pattern(self, nums: List[int]) -> bool:candidate_i, candidate_j [-nums[0]], [-nums[0]]for v in nums[1:]:idx_i bisect.bisect_right(candidate_i, -v)idx_j bisect.bisect_left(candidate_j, -v)if…

Python开发环境配置(mac M2)

1. 前言 作为一名程序员,工作中需要使用Python进行编程,甚至因为项目需要还得是不同版本的Python如何手动管理多个版本的Python,如何给Pycharm(IDE)配置对应的interpreter等,都成为一个 “不熟练工” 的难…

Debezium日常分享系列之:Debezium 3.0.0.Final发布

Debezium日常分享系列之:Debezium 3.0.0.Final发布 Debezium 核心的变化需要 Java 17基于Kafka 3.8 构建废弃的增量信号字段的删除每个表的详细指标 MariaDB连接器的更改版本 11.4.3 支持 MongoDB连接器的更改MongoDB sink connector MySQL连接器的改变MySQL 9MySQL…

嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)

前言: 本文是基于B站草履虫编写的平衡车相关内容,包括模块和基础知识,结合代码进行讲解,将知识进行汇总 (由于本篇内容较长,请结合目录使用) 注:基于开源精神,本文仅供学习参考 目…

Elasticsearch:使用 LLM 实现传统搜索自动化

作者:来自 Elastic Han Xiang Choong 这篇简短的文章是关于将结构化数据上传到 Elastic 索引,然后将纯英语查询转换为查询 DSL 语句,以使用特定过滤器和范围搜索特定条件。完整代码位于此 Github repo 中。 首先,运行以下命令安装…

【C语言刷力扣】1436.旅行终点站

题目: 解题思路: 两层循环查找,第一次循环中初始化 destination 为 path中每次旅行的终点作为最终的终点。二次循环查找当前 destination ,若是作为某次旅行的起点,说明不是最后的终点。 char* destCity(char ***paths…