Kafka设计原理详解

Kafka核心总控制器Controller

kafka的所有Broker都会注册到kafka集群中去。kafka集群会选举一个Broker作为Leader作为kafka七群的总控制器Controller。他负责管理整个集群所有分区Partition和副本follower的状态。

  1. 当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。
  2. 当检测到某个分区的ISR集合发生变化时,由控制器负责通知所有broker更新其元数据信息。
  3. 当使用kafka-topics.sh脚本为某个topic增加分区数量时,同样还是由控制器负责让新分区被其他节点感知 到。

这里请不要与Topic层面的多个partition中选举一个Partition作为Leader混淆了。
Controller选举机制是使用zookeeper的选举机制来实现:
在zookeeper中的主节点下面创建一个 /controller 临时节点,zookeeper会保证有且仅有一个broker能创建成功,这个broker
就会成为集群的总控器controller,如下:

Controller里面记录了当前的Controller是哪个节,如下:

Controller会用zookeeper的watcher机制,监控brokers下面的所有的broker,一旦发现某个broker挂掉了,就会去找到该broker有多少partion是leader并发起对该partition的选举。
对partition的leader重新选举的机制为:
监听topic相关的变化。为Zookeeper中的/brokers/topics节点添加TopicChangeListener,用来处理topic增减
的变化;
如下图, 对于每个Topic都有一个ISR列表,直接取ISR列表的第一个作为leader,如果当前挂的就是第一个,则选择后面一个作为leader。

unclean.leader.election.enable=false, 默认情况下, 是从IRS列表里面的节点作为leader,但是如果这个参数配置成true,不在ISR列表但是在Replicas列表里面的也可以作为选举leader的。但是可以想像得出来,这个不在ISR列表得副本数据不是很全得所以需要谨慎使用。
消费者消费消息得offset记录机制
每个consumer会定期将自己消费分区得offset提交给kafka内部topic__consumer_offsets里面,提交过得时候是用consumerGroupId + Topic + 分区号 ,value 就是offset得值。kafka会定期清理topic里得消息,最后就保留最新得那条数据。
kafka的log中为了提高并发量,默认会有50个分区,对于你提交得那条数据会放到那个分区使用下面得公式计算:
hash(consumerGroupId) % _Consumer_offsets 主题的分区数

kafka的Leader选举机制相关推荐

  1. Kafka Partition Leader选举机制原理详解

    1 大数据常用的选主机制 Leader选举算法非常多,大数据领域常用的有以下两种: 1.1 Zab(zookeeper使用) Zab协议有四个阶段 Leader election Discovery ...

  2. zookeeper leader选举机制

    最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 public enum ServerState {LOOKING, ...

  3. 分布式开发必须了解的Zookeeper的Leader选举机制(源码解析)

    分布式开发必须知道的Zookeeper知识及其的Leader选举机制(ZAB原子广播协议)   ZooKeeper是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括 ...

  4. 面试官:说一说Zookeeper中Leader选举机制

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新,可以微信搜索[小奇JAVA面试]第一时间阅 ...

  5. zookeeper的Leader选举机制详解

    转载自:https://www.toutiao.com/i6701570306445672963/?tt_from=copy_link&utm_campaign=client_share&am ...

  6. Kafka 副本leader选举

    谁来实施 分区leader副本的选举由Kafka Controller 负责具体实施. 选举时间 leader挂掉时 broker挂掉时,然后broker上可能有某些leader 选举资格 Kafka ...

  7. Kafka的leader选举

    实际上,leader选举的算法非常多,比如Zookeeper的Zab.Raft以及Viewstamped Replication.而Kafka所使用的leader选举算法更像是微软的PacificA算 ...

  8. Zookeeper启动和Leader选举机制

    Zookeeper启动流程 zookeeper服务器有4个状态: LOOKING:寻找Leader FOLLOWING:作为Follower LEADING:作为Leader OBSERVING:作为 ...

  9. zookeeper的leader选举机制

    什么是zxid和myid? zxid: zookeeper为了保证数据的有序性,会给每一个写操作的数据,编写一个全局唯一的zxid. zxid是一个64位的数字:前32位会是由当前节点参与的选举次数决 ...

  10. KafKa - 分区副本ISR选举机制

    一.KafKa分区副本ISR选举机制 kafka 中每一个主题又进一步划分成若干个分区.副本的概念实际上是在分区层级下定义的,每个分区配置有多若干个副本. 所谓的副本,本质上就是一个只能追加写消息的提 ...

最新文章

  1. 申请 SSL 证书 --Nginx 配置Https 最佳实践
  2. Codeforces 1004F Sonya and Bitwise OR (线段树)
  3. 记最近Linux中遇到cpu使用率低loadavg高的分析过程
  4. Bokeh 布局图像和工具
  5. dyld Library not loaded @rpath libswiftCore dylib 解决
  6. 数据库路由中间件MyCat - 源代码篇(17)
  7. Unity 2D Touch Movement
  8. Mac小知识--软件的三种安装/卸载方法,优缺点分析
  9. openai-gpt_为什么GPT-3感觉像是编程
  10. linux开源监控工具,十款开源免费监控软件
  11. ArcGIS如何进行拓扑检查
  12. 思科产品手册_品牌和CIS在中国的历史(六):附下载世界帆船协会品牌管理手册...
  13. 麻省理工学院公开课:信号与系统:模拟与数字信号处理 调幅演示
  14. 微信小程序云开发 把时间戳转换成正常的时间格式上传到数据库中
  15. Word VBA中的光标操作
  16. js处理移动端有虚拟按键影响页面布局的处理方法
  17. Exchange Server 2013 运维系列——EMS实用命令收集(持续更新中...)
  18. 全国计算机专业录取分数线排名,2020中国高校录取分数线排名全国大学录取分数线表...
  19. 个人日记开发最终实现
  20. 16、ADS使用记录之AB类功放设计

热门文章

  1. Technorati 推出博客广告媒体
  2. 如果你现在没有目标,或许很迷茫
  3. hipster_通过Java Hipster升级Spring Security OAuth和JUnit测试
  4. 威廉玛丽学院计算机专业,威廉玛丽学院CS排名2020年掌握的流程盘点
  5. 问答网站Stack Overflow的成功之道
  6. 云计算:程序员重回个人英雄时代
  7. cdr软件百度百科_Cdr是什么软件
  8. ASP.NET DATETIME
  9. Question Answering over Freebase via Attentive RNN with Similarity Matrix based论文解读
  10. Mapped Statements collection already contains value for com.bai.dao.Userdao.UserByID