码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kafka 控制器(controller)


    Kafka 控制器(controller)

    在kafka集群中 会存在一个或者多个broker(一个服务器就是一个broker),其中有一个broker会被选举为控制器 kafka controller ,负责管理整个集群中所有副本、分区的状态,主要为以下三个功能:

    • 当某个分区中的leader 副本发生故障时,控制器负责选举新的leader副本
    • 某个分区的ISR信息发生变化时,控制器负责通知所有的broker更新元数据信息
    • 某个topic增加分区时,控制器负责分区的重新分配

    控制器如何选举呢?

    依赖于zookeeper,选举成功的controller会在zk中创建/controller临时节点。

    每个broker在启动的时候都会尝试创建一个controller节点,但是只有一个可以成功,创建成功后的临时节点 内容可以如下所示:

    {“version”:1,“brokerid”:0,“timestamp”:“xxxxxxxxx”}

    version貌似目前是固定的

    brokerid 表示选举成功的broker

    timestamp 表示选举成功时的时间戳

    另外 在zk中还有一个/controller_epoch持久节点,记录当前的控制器是第几代控制器,初始值为1,保证控制器的唯一性。

    控制器在选举成功后会读取zk的各个节点数据来初始化上下文信息,这些信息需要同步到其他的普通broker节点中。这就涉及到线程安全问题,kafka控制器是如何确保线程安全的同时又确保性能的呢?

    在这里插入图片描述

    如图所示,将每个事件(这些事件会读取或者更新上下文信息)封装,按照先后顺序暂存到LinkedBlockingQueue中,使用一个ControllorEventThread线程按照FIFO的原则处理各个事件

    优雅关闭:

    kafka-server-stop.sh 不一定都有用。

    分区leader的选举

    由kafka controllor负责,选举规则:在ISR中存活,在AR中靠前的第一个。

    ISR:表示和 Leader 保持同步的 Follower 集合 (“活着”),follower长时间没有向leader发送通信请求或者同步数据,就会被踢出isr,时间由replica.lag.time.max.ms参数设定默认是30s。

    OSR:表示延迟过多的副本。(“死了”)

    AR:ISR+OSR

    参考:《深入理解 Kafka:核心设计与实践原理》

  • 相关阅读:
    基于AI与物联网技术的智能视频监控系统架构剖析
    关于Redis集群的数据分区和故障转移,这应该是全网最清晰的一篇
    vue和react项目中实现 px 转 vm
    Dubbo之服务分组、分组聚合。
    Python自学笔记8:实操案例五(循环输出26个字母对应的ASCII码值,模拟用户登录,猜数游戏,计算100-999之间的水仙花数)
    python环境报错
    Python软件编程等级考试二级——20220618
    并发编程之并发理论篇--内存模型
    大桌子系统升级
    JAVA计算机毕业设计社区志愿者服务管理系统源码+系统+mysql数据库+lw文档
  • 原文地址:https://blog.csdn.net/weixin_47467016/article/details/134525900
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号