当前位置: 首页 > news >正文

Kafka - 3.x 图解Broker总体工作流程

文章目录

  • Zk中存储的kafka的信息
  • Kafka Broker总体工作流程
    • 1. broker启动后向zk中注册
    • 2. Controller谁先启动注册,谁说了算
    • 3. 由选举出来的Controller监听brokers节点的变化
    • 4. Controller决定leader选举
    • 5. Controller将节点信息上传到Zk中
    • 6. 其他Controller从zk中同步相关信息
    • 消息的发送和存储
    • 7. 假设Broker1中的Leader挂了
    • 8 Controller监听到节点变化
    • 9 获取 ISR
    • 10 选举新的Leader
    • 11 . 更新Leader 和 ISR
  • 实例模拟
  • Broker重要参数

在这里插入图片描述


Zk中存储的kafka的信息

在这里插入图片描述
当前直接存储在根目录下

在这里插入图片描述


在这里插入图片描述

#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

在这里插入图片描述


Kafka Broker总体工作流程

1. broker启动后向zk中注册

在这里插入图片描述

在这里插入图片描述


2. Controller谁先启动注册,谁说了算

在这里插入图片描述


3. 由选举出来的Controller监听brokers节点的变化

在这里插入图片描述

4. Controller决定leader选举

在这里插入图片描述

5. Controller将节点信息上传到Zk中

在这里插入图片描述


6. 其他Controller从zk中同步相关信息

在这里插入图片描述

消息的发送和存储

在这里插入图片描述

7. 假设Broker1中的Leader挂了

在这里插入图片描述


8 Controller监听到节点变化

在这里插入图片描述

9 获取 ISR

在这里插入图片描述

10 选举新的Leader

在这里插入图片描述

11 . 更新Leader 和 ISR

在这里插入图片描述


实例模拟

1)案例内容:模拟kafka上下线,查看zookeeper中数据变化
2)查看kafka节点相关信息:① 查看zookeeper上的kafka集群节点信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/ids
[102, 103, 104]
② 查看当前kafka集群节点中的controller信息
[zk: localhost:2181(CONNECTED) 2] get /kafka/controller
{"version":1,"brokerid":103,"timestamp":"1637292471777"}
③ 查看kafka中的first主题的0号分区的状态
[zk: localhost:2181(CONNECTED) 2] get /kafka/brokers/topics/first/partitions/0/state
{"controller_epoch":24,"leader":102,"version":1,"leader_epoch":18,"isr":[102,103,104]}
3)模拟kafka下线:停止hadoop103上的kafka
[xxx@hadoop103 kafka]$ bin/kafka-server-stop.sh
4)查看kafka相关节点信息
① 查看zookeeper上的kafka集群节点信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/ids
[102, 104]
② 查看当前kafka集群节点中的controller信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka/controller
{"version":1,"brokerid":102,"timestamp":"1637292471777"}
③ 查看kafka中的first主题的0号分区的状态
[zk: localhost:2181(CONNECTED) 2] get /kafka/brokers/topics/partitions/0/state
{"controller_epoch":24,"leader":102,"version":1,"leader_epoch":18,"isr":[102,104]}
5)重新启动hadoop103上的kafka服务
[xxx@hadoop103 kafka]$ bin/kafka-server-stop.sh
6)再次查看上述节点,观察区别变化

Broker重要参数

参数名称描述
replica.lag.time.max.msISR中的Follower超过该事件阈值(默认30s)未向Leader发送同步数据,则该Follower将被踢出ISR。
auto.leader.rebalance.enable默认是true。自动Leader Partition 平衡。
leader.imbalance.per.broker.percentage默认是10%。每个broker允许的不平衡的leader的比率。如果每个broker超过了这个值,控制器会触发leader的平衡。
leader.imbalance.check.interval.seconds默认值300秒。检查leader负载是否平衡的间隔时间。
log.segment.bytesKafka中log日志是分成一块块存储的,此配置是指log日志划分成块的大小,默认值1G。
log.index.interval.bytes默认4kb,kafka里面每当写入了4kb大小的日志(.log),然后就往index文件里面记录一个索引。
log.retention.hoursKafka中数据保存的时间,默认7天。
log.retention.minutesKafka中数据保存的时间,分钟级别,默认关闭。
log.retention.msKafka中数据保存的时间,毫秒级别,默认关闭。(优先级最高)
log.retention.check.interval.ms检查数据是否保存超时的间隔,默认是5分钟。
log.retention.bytes默认等于-1,表示无穷大。超过设置的所有日志总大小,删除最早的segment。
log.cleanup.policy默认是delete,表示所有数据启用删除策略;如果设置值为compact,表示所有数据启用压缩策略。
num.io.threads默认是8。负责写磁盘的线程数。整个参数值要占总核数的50%。
num.replica.fetchers副本拉取线程数,这个参数占总核数的50%的1/3。
num.network.threads默认是3。数据传输线程数,这个参数占总核数的50%的2/3。
log.flush.interval.messages强制页缓存刷写到磁盘的条数,默认是Max(long) (9223372036854775807)。一般交给系统管理。
log.flush.interval.ms每隔多久,刷数据到磁盘,默认是null。一般不建议修改,交给系统自己管理。

在这里插入图片描述

http://www.lryc.cn/news/208856.html

相关文章:

  • APP自动化测试 ---- Appium介绍及运行原理
  • 学习模板发布
  • Hive 视图和索引
  • EtherCAT主站SOEM-- 0 SOEM下载编译及文件功能介绍
  • 【Python机器学习】零基础掌握RFE特征选择
  • R语言的极值统计学、分位数回归、机器学习方法
  • 【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?
  • C++环境配置【学习笔记(一)】
  • Python数据结构——树
  • Simulink和GUI联合使用
  • 【0基础学Java第一课】-- 初始Java
  • osg3.4的插件及功能
  • 『力扣刷题本』:轮转数组
  • Java关于实例对象调用静态变量和静态方法问题
  • 【开源】基于SpringBoot的海南旅游景点推荐系统的设计和实现
  • 字符串中的assert和strcat
  • 方舟生存进化ARK个人服务器搭建教程保姆级
  • SpringBoot可以连接RabbitMQ集群吗 ?
  • 【机器学习】KNN算法-模型选择与调优
  • NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
  • redis集群中节点fail,noaddr
  • Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)
  • 使用Node.js软件包管理器(npm)安装TypeScript
  • 鸿蒙ArkUI-X跨端应用开发,一套代码构建多平台应用
  • 【鸿蒙软件开发】ArkTS基础组件之Gauge(环形图表)、LoadingProgress(动态加载)
  • C++模板类用作参数传递
  • SQL server 代理服务启动和查看
  • 单例模式详解【2023年最新】
  • 读高性能MySQL(第4版)笔记21_读后总结与感想兼导读
  • 放学辣[简单版]