【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据

  • [1. Kafka Broker 工作流程](#1. Kafka Broker 工作流程)
    • [1.1 Zookeeper 存储的 Kafka 信息](#1.1 Zookeeper 存储的 Kafka 信息)
    • [1.2 Kafka Broker总体工作流程](#1.2 Kafka Broker总体工作流程)
      • [1.2.1 Controller介绍](#1.2.1 Controller介绍)
    • [1.3 Broker 重要参数](#1.3 Broker 重要参数)
  • [2. 节点服役与退役](#2. 节点服役与退役)
  • [3. Kafka副本](#3. Kafka副本)

1. Kafka Broker 工作流程

1.1 Zookeeper 存储的 Kafka 信息

  1. 启动Zookeeper客户端
java 复制代码
[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh
  1. 通过 ls 命令可以查看 kafka 相关信息
java 复制代码
[zk: localhost:2181(CONNECTED) 2] ls /kafka

1.2 Kafka Broker总体工作流程

  1. Broker注册:每个Kafka Broker在启动时会向ZooKeeper注册自己,ZooKeeper维护一个活动Broker列表,这个列表便于集群中的各个Broker相互发现并进行通信。

  2. Leader选举: Controller负责选举分区的领导者。当一个分区的领导者副本不可用时,Controller会选择一个新的副本作为领导者。选举结果通过ZooKeeper更新,并通知所有相关的Broker。

  3. 监控: Controller会监控Broker节点的变化。

  4. Controller决定选举:选举规则:在isr中存活为前提,按照AR中排在前面的优先。例如ar[1,0,2], isr [1,0,2],那么leader就会按照1,0,2的顺序轮询

  5. Controller将节点信息上传到ZK

  6. Controller将领导者选举的结果和副本状态变更通知所有相关的Broker,确保它们有最新的元数据信息。

1.2.1 Controller介绍

在Kafka集群中,并不是每个Broker都有一个Controller,而是整个集群中只有一个活跃的Controller。这个Controller由一个Broker担任,其职责是管理和协调整个集群的元数据和状态变更。以下是关于Kafka Controller的详细介绍:

Kafka Controller职责

  1. 分区副本状态管理:
    领导者选举: 当一个分区的领导者副本不可用时,Controller负责选举新的领导者副本,确保分区始终有一个活跃的领导者来处理读写请求。
    副本同步: Controller监控副本的状态,并确保追随者副本与领导者副本保持同步。不同步的副本会被标记为"Out of Sync"(OOS)。
  2. Broker管理:
    Broker注册和注销: 当一个Broker加入或退出集群时,Controller会更新集群的元数据,并重新分配分区和副本,以确保负载均衡和高可用性。
    集群扩展和缩减: Controller处理Broker的增加或减少,进行相应的分区和副本重新分配。
  3. 分区重新分配:
    负载均衡: 当集群中负载不均衡时,Controller可以根据配置重新分配分区和副本,确保各个Broker的负载均衡。
    分区迁移: Controller协调分区和副本在不同Broker之间的迁移,实现高效的负载管理和故障恢复。
  4. 集群元数据管理:
    元数据更新: Controller管理集群范围内的所有元数据更新,包括主题创建、删除、配置变更等。
    通知Broker: 当元数据发生变化时,Controller通知所有相关的Broker,确保它们使用最新的配置信息。
  5. 故障检测和恢复:
    Broker故障检测: Controller定期检查Broker的状态,如果检测到某个Broker故障,它会触发相应的故障恢复机制。
    故障恢复: 在Broker故障的情况下,Controller重新分配该Broker上的分区和副本,确保消息的高可用性和数据的完整性。

Controller与Broker的关系

  • 控制器是一个特殊的Broker:虽然Controller执行管理和协调任务,但它本质上还是一个Broker,也处理正常的消息生产和消费请求。
  • 单一Controller:在任何时候,Kafka集群中只能有一个活跃的Controller。其他Broker在需要时可以通过选举成为Controller。

1.3 Broker 重要参数


2. 节点服役与退役

3. Kafka副本

// P31 TODO

相关推荐
忍冬行者13 分钟前
Kafka 概念与部署手册
分布式·kafka
深蓝电商API24 分钟前
爬虫+Redis:如何实现分布式去重与任务队列?
redis·分布式·爬虫·python
在未来等你1 小时前
Elasticsearch面试精讲 Day 28:版本升级与滚动重启
大数据·分布式·elasticsearch·搜索引擎·面试
AAA小肥杨7 小时前
基于k8s的Python的分布式深度学习训练平台搭建简单实践
人工智能·分布式·python·ai·kubernetes·gpu
爬山算法10 小时前
Redis(73)如何处理Redis分布式锁的死锁问题?
数据库·redis·分布式
yumgpkpm12 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
祈祷苍天赐我java之术12 小时前
Redis 数据类型与使用场景
java·开发语言·前端·redis·分布式·spring·bootstrap
猫林老师15 小时前
HarmonyOS线程模型与性能优化实战
数据库·分布式·harmonyos
阿里云云原生16 小时前
AI 时代的数据通道:云消息队列 Kafka 的演进与实践
云原生·kafka
在未来等你18 小时前
Elasticsearch面试精讲 Day 26:集群部署与配置最佳实践
大数据·分布式·elasticsearch·搜索引擎·面试