Kafka篇——Kafka集群Controller、Rebalance和HW的详细介绍,保姆级教程!

这篇具有很好参考价值的文章主要介绍了Kafka篇——Kafka集群Controller、Rebalance和HW的详细介绍,保姆级教程!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Controller

一、概念
在Kafka中,Controller是Kafka集群中的一个角色,负责管理集群的元数据、分区分配、副本管理等功能。
Controller的主要职责包括:
1. 元数据管理:Controller负责维护Kafka集群的元数据,包括broker的存活状态、分区的分配情况、副本的分配情况等。它通过与Zookeeper进行交互,监控集群中broker的状态变化,并更新集群的元数据。
通俗的讲,就是当Controller检测到某个分区的ISR集合发生变化时,由Controller负责通知所有Broker更新其元数据信息
2. 分区分配:当有新的topic创建或者有新的broker加入集群时,Controller根据一定的策略来进行分区分配。它会根据集群的负载情况、副本的分布情况等因素,将分区均匀地分配给各个broker。
3. 副本管理:Controller负责管理副本的状态和分配情况。它会监控副本的健康状态,当副本出现故障或离线时,Controller会接管该副本的分区,并重新分配该副本的副本。比如Leader副本挂了,Controller会去查看ISR中存的分区,排在第一位的肯定是上一个Leader副本,后面的是理论上网络状态更优的分区,那么Controller,会将这个分区升级成Leader
4. 集群状态管理:Controller会监控整个集群的状态,并且在集群出现故障或者变化时做出相应的调整。例如,当集群中的broker宕机时,Controller会触发副本重新分配,确保分区的高可用性。

二、Controller选举流程
Kafaka集群在启动的时候,会在Zookeeper中创建一个临时序号节点,序号最小的也就是最先启动的Broker节点,被认定为是Controller,继续管理集群中的相关数据、分区的分配等功能

Rebalance

一、Rebalance机制
Kafka的Rebalance机制是一种自动化的重平衡过程,用于在Consumer Group中的消费者数量或消费的分区数发生变化时重新分配消费者和分区之间的关系。Rebalance机制确保了Consumer Group中的所有消费者能够均匀地分配订阅的主题分区,并保持负载均衡。
当Consumer Group中的消费者数量发生变化,或者消费的分区数发生变化时,Kafka会自动触发Rebalance过程。例如,当某个消费者实例挂掉时,Kafka会自动将该消费者所拥有的分区重新分配给其他消费者实例。同样地,当新加入的消费者实例加入Consumer Group时,Kafka也会重新分配分区给新加入的实例。
Rebalance过程中,消费者无法从Kafka读取消息,因此会对Kafka的TPS(每秒传输的消息量)产生影响。如果Kafka集群中有大量的节点,例如数百个节点,那么重平衡可能会耗时极多,因此应尽量避免在系统高峰期的重平衡发生。
为了优化Rebalance过程,可以通过设置合理的配置参数来控制Rebalance的行为。例如,可以设置max.poll.interval.ms参数来控制消费者在发生Rebalance时等待分区重新分配的最长时间,以避免长时间无法读取消息。
总之,Kafka的Rebalance机制提供了一种自动化的方式来处理Consumer Group中的消费者和分区变化,确保了负载均衡和系统的可用性。

二、Rebalance机制重新分配细节
触发Rebalance机前提:
消费者没有指明分区消费,当消费组里的消费者和分区的关系发生变化,那么就会触发Rebalance机制,这个机制会重新调整消费者消费哪个分区。

在触发Rebalance机制前,消费者在哪个分区消费,有下面3种策略:
1、range范围分配:
在Kafka中,消费者消费分区的策略有多种,其中一种默认的分配策略是Range范围分配。这种策略可以确保每个消费者消费的分区数量是均衡的。
以下是Kafka中Range范围分配的示例公式:
n = 分区数量 / 消费者数量
m = 分区数量 % 消费者数量
前m个消费者消费n+1个分区,剩余消费者消费n个分区。
需要注意的是,Range范围分配策略是针对每个主题(topic)的。要配置消费者的分区分配策略为Range范围分配,需要将消费者的partition.assignment.strategy配置为org.apache.kafka.clients.consumer.RangeAssignor。

2、轮询:轮着消费

3、sticky:在触发Rebalance后,在消费者消费的原分区不变的基础上进行调整,不会改变之前的分配。如果这个策略没有开,那么就要全部进行重新分配,非常消耗性能,建议开启

HW

一、HW介绍
在Kafka中,HW(High Watermark)“高水位”是一个关键概念,用于表示消息复制的进度。具体来说,HW表示已经成功复制到所有副本的消息的位置。
HW之前的所有消息都被认为是已提交的消息,这意味着消费者可以安全地消费这些消息。消费者最多只能消费到HW所在的位置,另外每个副本都有HW,
Leader和Follower各自更新自己的HW状态,对于Leader重新写入消息,消费者不能立即消费,Leader会等待该消息被所有ISR中的副本同步并更新HW,
此时消息才能被消费者消费。这样就保证了如果Leader所在的Broker失效挂掉了,不会在新的Leader副本中重复消费

二、HW图示

Kafka篇——Kafka集群Controller、Rebalance和HW的详细介绍,保姆级教程!,Kafka,kafka,分布式

根据上图所示,为了防止消息丢失,保证消费者的安全消费。只有当Leader副本将消息同步到其他所有的副本后,HW才会下移动,才能消费到第5条消息,
否则只能消费到第4条消息

LEO

Kafka中的LEO(Log End Offset)表示当前日志文件中下一条待写入消息的offset。每个partition的log最后一条Message的位置都会有一个LEO。它用于标识消息追加到文件的最后位置。
此外,LEO还是Log End Offset的缩写,用于标识当前副本中最后一条消息的offset。当生产者向Leader副本追加消息时,Leader副本的LEO标记会增加;当Follower副本成功从Leader副本拉取消息并更新到本地时,Follower副本的LEO也会增加。

至此,关于Kafka的常见关键技术点介绍完毕,知识点较多,希望大家能够反复学习,常学常新奥!文章来源地址https://www.toymoban.com/news/detail-803667.html

到了这里,关于Kafka篇——Kafka集群Controller、Rebalance和HW的详细介绍,保姆级教程!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【运维知识大神篇】超详细的ELFK日志分析教程10(kafka集群原理+基本使用+zookeeper和kafka堆内存调优+kafka监控和压力测试+filebeat和logstash对接kafka)

    本篇文章继续给大家介绍ELFK日志分析,我们先前介绍了ELFK架构,zookeeper部署使用,kafka的部署,仅差kafka使用就将整个体系融汇贯通了。我们本篇文章将以kafka为核心,详细介绍kafka使用,最终将kafka融入ELFK架构中,大致内容见下面目录。 目录 kafka集群原理 一、专业术语 二、

    2024年02月04日
    浏览(50)
  • 【python plotly库介绍】从视觉到洞见:桑基图在业务分析中的应用【保姆级教程过于详细珍藏版】

     👤作者介绍:10年大厂数据经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析可视化:企业实战案例 备注说明:方便大家阅读

    2024年04月17日
    浏览(21)
  • kafka的rebalance机制

    再平衡:Reblance是一种协议,规定了一个Consumer Group下所有Consumer如何达成一致,来分配订阅Topic的每个分区,尽量让每个消费者分配到相对均匀的分区,使Consumer的资源都能得到充分利用,防止有些Consumer比较忙,有的Consumer比较闲。 当kafka感知到存在让分区和消费者分配不均

    2024年02月16日
    浏览(24)
  • SpringMVC框架中@Controller类的方法的返回值的详细介绍

    目录 前言 1. 返回值类型为ModelAndView 2.  返回值为String(视图) 3.  返回值为void 4.  返回值为Object 5. 返回值为List  6. 返回值为String(数据) 在SpringMVC框架中,我们最常见的就是@Controller注解,可以说是只要见到了@Controller注解,就可以说明当前的项目使用了SpringMVC框架。那么在使

    2024年02月19日
    浏览(29)
  • 98、简述Kafka的rebalance机制

    consumer group中的消费者与topic下的partion重新匹配的过程 何时会产生rebalance: consumer group中的成员个数发生变化 consumer 消费超时 group订阅的topic个数发生变化 group订阅的topic的分区数发生变化 coordinator: 通常是partition的leader节点所在的broker,负责监控group中consumer的存活,consumer维

    2024年02月15日
    浏览(22)
  • Kafka-消费者-KafkaConsumer分析-Rebalance

    在开始介绍Rebalance操作的实现细节之前,我们需要明确在哪几种情况下会触发Rebalance操作: 有新的消费者加入Consumer Group。 有消费者宕机下线。消费者并不一定需要真正下线,例如遇到长时间的GC、网络延迟导致消费者长时间未向GroupCoordinator发送HeartbeatRequest时,GroupCoordina

    2024年01月20日
    浏览(30)
  • flink kafka消费者如何处理kafka主题的rebalance

    我们日常使用kafka客户端消费kafka主题的消息时,当消费者退出/加入消费者组,kafka主题分区数有变等事件发生时,都会导致rebalance的发生,此时一般情况下,如果我们不自己处理offset,我们不需要理会这个rebalance的,当rebalance完成后,每个消费者会从__consumer_offsets中获取每个

    2024年02月14日
    浏览(29)
  • 分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)

    01. Kafka 消费者分区再均衡是什么? 消费者群组里的消费者共享主题分区的所有权。当一个新消费者加入群组时,它将开始读取一部分原本由其他消费者读取的消息。当一个消费者被关闭或发生崩溃时,它将离开群组,原本由它读取的分区将由群组里的其他消费者读取。 分区

    2024年02月12日
    浏览(27)
  • Kafka-消费者-Consumer Group Rebalance设计

    在同一个Consumer Group中,同一个Topic的不同分区会分配给不同的消费者进行消费,那么为消费者分配分区的操作是在Kafka服务端完成的吗?分区是如何进行分配呢?下面来分析Rebalance操作的原理。 Kafka最开始的解决方案是通过ZooKeeper的Watcher实现的。 每个Consumer Group在ZooKeeper下都维

    2024年01月19日
    浏览(43)
  • Kafka rebalance 的几种原因与解决方案

    网上有很多文章讲述 Kafka rebalance 的原理,本文是列举常见的几种 rebalance 场景。 rebalance 期间,当前 consumer group 的所有 consumer 都要暂停消费,开销较大。因此应该尽量减少 rebalance ,而 relalance 的原因通常是 consumer 数量变化,常见的几种情况如下: 如果一个 consumer 刚启动,

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包