IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Kafka

Kafka Consumer消费消息和Rebalance机制(2)

时间:2024-03-20 15:00:54 来源:IT袋 作者:马勇
导读:Kafka,Kafka Rebalance rebalance 本质上是一种协议,规定了一个 consumer group 下的所有 consumer 如何达成一致来分配订阅 topic 的每个分区。 比如某个 group 下有 20 个 co

Kafka

Kafka Rebalance

rebalance 本质上是一种协议,规定了一个 consumer group 下的所有 consumer 如何达成一致来分配订阅 topic 的每个分区。

比如某个 group 下有 20 个 consumer,它订阅了一个具有 100 个分区的 topic。

正常情况下,Kafka 平均会为每个 consumer 分配 5 个分区。这个分配的过程就叫 rebalance。

什么时候rebalance?

这也是经常被提及的一个问题。rebalance 的触发条件有三种:

  • 组成员发生变更(新 consumer 加入组、已有 consumer 主动离开组或已有 consumer 崩溃了——这两者的区别后面会谈到)
  • 订阅主题数发生变更
  • 订阅主题的分区数发生变更

如何进行组内分区分配?

Kafka 默认提供了两种分配策略:Range 和 Round-Robin。

当然 Kafka 采用了可插拔式的分配策略,你可以创建自己的分配器以实现不同的分配策略。

kafka高频面试题

  • Kafka 有哪些命令行工具?你用过哪些?/bin目录,管理 kafka 集群、管理 topic、生产和消费 kafka
  • Kafka Producer 的执行过程?拦截器,序列化器,分区器和累加器
  • Kafka Producer 有哪些常见配置?broker 配置,ack 配置,网络和发送参数,压缩参数,ack 参数
  • 如何让 Kafka 的消息有序?Kafka 在 Topic 级别本身是无序的,只有 partition 上才有序,所以为了保证处理顺序,可以自定义分区器,将需顺序处理的数据发送到同一个 partition
  • Producer 如何保证数据发送不丢失?ack 机制,重试机制
  • 如何提升 Producer 的性能?批量,异步,压缩
  • 如果同一 group 下 consumer 的数量大于 part 的数量,kafka 如何处理?多余的 Part 将处于无用状态,不消费数据
  • Kafka Consumer 是否是线程安全的?不安全,单线程消费,多线程处理
  • 讲一下你使用 Kafka Consumer 消费消息时的线程模型,为何如此设计?拉取和处理分离
  • Kafka Consumer 的常见配置?broker, 网络和拉取参数,心跳参数
  • Consumer 什么时候会被踢出集群?奔溃,网络异常,处理时间过长提交位移超时
  • 当有 Consumer 加入或退出时,Kafka 会作何反应?进行 Rebalance
  • 什么是 Rebalance,何时会发生 Rebalance?topic 变化,consumer 变化

上述的关于Kafka 跟 Consumer消费消息和Rebalance机制的全部内容,您了解了吗?

相关阅读

  • 数据库设计分为哪几个阶段 如何设计数据库

    数据库设计分为哪几个阶段 如何设计数据库

    您可能不了解数据库设计分为哪几个阶段的IT小经验,一起跟随小编看看吧! 数据库设计是一个复杂的过程,通常分为以下几个阶段: 需求分析 在这个阶段,数据库设计师需要与客户或业务团

  • FTP介绍及常见命令 FTP常用命令及简介

    FTP介绍及常见命令 FTP常用命令及简介

    如果想知道FTP介绍及常见命令方面的内容,很不错的方法小知识,建议收藏哦! File Transfer Protocol(FTP)是一种在客户端和服务器之间传输文件的标准网络协议。 FTP允许用户上传和下载文件,

  • 网页首页内容模板在哪 免费html网页模板

    网页首页内容模板在哪 免费html网页模板

    本文导读:网页首页内容模板在哪和免费html网页模板的方法内容,接下来IT袋小编就来介绍。 很多刚从事公众号运营的小伙伴,对公众平台的功能设置和使用方法还不是很了解,尤其是一些不

  • 建站是什么专业 建网站的流程讲解

    建站是什么专业 建网站的流程讲解

    今天分享:建站是什么专业和建网站的流程讲解的教程内容,一起跟随小编看看吧! 公司建站需要了解什么? 做任何事情都是先要有一定的了解后才可以开始着手进行。下面我们一起学习一下