首页 > 其他分享 >Kafka核心总控制器Controller主要作用

Kafka核心总控制器Controller主要作用

时间:2023-06-29 15:00:53浏览次数:49  
标签:控制器 副本 分区 controller broker Topic Controller Kafka 节点

  https://www.yisu.com/zixun/586556.html

1 简介

1)更新集群元数据信息

2)创建Topic

3)删除Topic

4)分区重分配

5)preferred leader副本选举

6)Topic分区扩展

7)Broker加入集群

8)Broker崩溃

9)受控关闭

10)controller leader选举

 

2 更新集群元数据信息

  Client可以从任何一台broker上获取集群完整的元数据信息,这就需要controller在集群元数据信息发生变更后通知每一个broker。当有分区信息变更时,controller会将变更后的信息封装进UpdateMetadataRequest请求中,然后发送给集群中的每个Broker。

 

3 创建Topic

  Controller启动时会创建一个Zookeeper监听器,该监听器的作用是监听/brokers/topics下子节点的变化情况。

  Topic在创建时首先会在/brokers/topics节点下面创建一个子节点(znode),并且将该Topic的分区和副本情况写入这个znode中。当监听器发现/brokers/topics有新增znode时,就会立即触发controller创建Topic(为新的Topic每个分区确定Leader和ISR),然后更新集群元数据信息。

  当创建完成以后,controller会创建一个新的监听器/brokers/topics/{topic_name},监听新的Topic内容的变更。这样当Topic分区发生变化时,controller能够及时收到通知

 

4 删除Topic

  Kafka集群删除Topic都是向Zookeeper下的/admin/deletetopics下新增一个子节点(znode)。controller在启动时会在/admin/deletetopics创建一个监听器监听该节点的子节点是否发生变更。当有新的子节点被创建时,controller立即开启删除Topic删除逻辑。主要执行两步:

  1)停止该Topic的所有副本

  2)删除副本日志数据

  3)controller移除/admin/delete_topics/{待删除topic节点},topic删除完成

 

5 分区重分配

  分区重分配主要为了对Topic下面的所有分区重新分配副本所在的broker机器,以期望实现更均匀的分配。该操作需要管理员手动定制分配方案,并按照指定格式写入Zookeeper的/admin/reassign_partitions下。

  分区重分配的过程是先扩展再收缩的过程。controller首先将分区副本进行扩展,等他们全部与Leader副本同步以后将Leader设置为新分配方案中的副本,最后执行收缩,将分区副本减少为分配方案中的副本集合。

 

6 分区leader选举

  当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本

 

7 Topic分区扩展

  当前增加分区通常通过kafka-topics.sh的--alert选项,它会向Zookeeper下的/brokers/topics/{待修改的Topic}中写入新的分区目录。

  由于在创建Topic以后,会注册一个监听该目录变化监听器,因此当目录发生变化时,controller会收到通知,执行分区创建任务,之后更新集群元数据信息。

 

8 broker加入集群

  每个broker创建成功后,都会在Zookeeper的/brokers/ids节点下创建一个子节点,并写入broker的信息。controller会在/brokers/ids创建一个监听该节点的子节点是否发生变化的监听器,一旦收到通知,然后就会更新集群元数据信息。

 

9 broker崩溃

  broker在加入集群时注册的节点是个临时节点,伴随broker的崩溃,临时节点消失,然后controller会收到通知,开启关闭broker逻辑,并更新集群元数据信息。

 

10 受控关闭

  受控关闭是指的以kafka-server-stop.sh或者kill -15的方式关闭kafka broker。

  受控关闭是由即将关闭的broker向controller发送ControlledShutdownRequest。当发送完请求后,broker处于阻塞状态,controller会进行leader重选举和ISR收缩调整后,会给broker发送ControlledShutdownResoponse,表示broker可以关闭。

 

11 controller leader选举

  当所有broker一起启动时,会争先在Zookeeper上创建/controller临时节点,并写入controller broker的信息,Zookeeper可以保证只有一个broker可以创建成功,创建成功的broker节点还会更新/controller_epoch的值。没有创建成功的broker监听/controller,加入controller宕机,其他broker将会收到通知,然后去竞选controller。

 

12 controller与broker通信

  controller启动时会与集群中的所有broker(包括controller在的broker)建立TCP连接,并且会为每个TCP连接建立一个RequestSendThread,也就是说controller会和每个broker建立一个TCP连接,并且开启一个I/O线程。

  controller目前主要有以下三种请求:

    1)UpdateMetaRequest:更新集群元数据请求,包含了集群的元数据信息。broker接收到该请求后,会更新本地的缓存信息

    2)LeaderAndIsrRequest:用于创建分区和副本

    3)StopReplicaRequest:停止指定副本的数据请求操作,另外还负责删除副本数据功能

标签:控制器,副本,分区,controller,broker,Topic,Controller,Kafka,节点
From: https://www.cnblogs.com/jthr/p/17514202.html

相关文章

  • kafka producer生产消息发送到kafka的过程
    1 KafkaProducer的几个重要成员变量1)Partitioner 用来获取消息应该发往哪个分区privatefinalPartitionerpartitioner; 2)ProducerMetadata kafka元数据privatefinalProducerMetadatametadata; 3)RecordAccumulator 消息累加器,储存生产者生产......
  • 一文搞懂什么是@Component和@Bean注解以及如何使用(包括与@Controller、@Service、@Re
      来源  https://blog.csdn.net/m0_51358164/article/details/126120731一文搞懂什么是@Component和@Bean注解以及如何使用......
  • Kafka参数
     参数解释 brokerbroker.id=1每一个broker在集群中的唯一标示,要求是正数。在改变IP地址,不改变broker.id的话不会影响consumerslog.dirs=/tmp/kafka-logskafka数据的存放地址,多个地址的话用逗号分割/tmp/kafka-logs-1,/tmp/kafka-logs-2port=6667提供给客户端响应......
  • 从Kafka中学习高性能系统如何设计 | 京东云技术团队
    1前言相信各位小伙伴之前或多或少接触过消息队列,比较知名的包含RocketMQ和Kafka,在京东内部使用的是自研的消息中间件JMQ,从JMQ2升级到JMQ4的也是带来了性能上的明显提升,并且JMQ4的底层也是参考Kafka去做的设计。在这里我会给大家展示Kafka它的高性能是如何设计的,大家也可以学习相......
  • kafka
    1kafka及消息队列简介kafka及消息队列简介 2kafka单机安装和简单使用kafka单机安装和简单使用 3kafka集群搭建kafka集群搭建 4kafka常用命令kafka常用命令 5kafka术语及架构简介kafka术语及架构简介 6kafka高可用kafka高可用......
  • kafka常用命令
    启动kafkabin/kafka-server-start.shconfig/server.properties、后台启动加参数-daemonbin/kafka-server-start.sh-daemon../config/server.properties查看topic信息cd到kafka的安装位置,找到bin目录  单机/集群都可以配置参数,下面命令为查询集群的topic信息bin/kafka-top......
  • docker之kafka安装
    一、带zookeeper和UI版本version:'2'services:xbd-zk-1:image:bitnami/zookeeper:3.8.1restart:alwayscontainer_name:xbd-zk-1privileged:trueports:-2181:2181environment:-TZ=Asia/Shanghai-ZOO_P......
  • kafka ack机制
    1kafka基本架构kafka的partion分为leader和follow。leader参与允许,二follower仅作为备份。那么,leader和follower之间是怎么同步的呢 2leader和follower的同步Partition只有Leader是对外提供读写服务的也就是说,如果有一个客户端往一个Partition写入数据,......
  • m基于simulink的PID,模糊PID以及神经网络模糊PID三种控制器的控制性能对比仿真
    1.算法仿真效果matlab2013b仿真结果如下:     2.算法涉及理论知识概要        基于Simulink的神经网络模糊PID控制器的控制原理和工作步骤。首先,我们将介绍模糊控制和神经网络控制的基本原理,然后介绍如何将这两种控制策略结合起来实现更好的控制效果。最......
  • 自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控
    自动驾驶横纵向耦合控制-复现Apollo横纵向控制基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制matlab与simulink联合仿真,纵向控制已经做好油门刹车标定表,跟踪五次多项式换道轨迹,效果完美。内含三套代码,两套采用面向对象编程-一套只对控制量添加约......