消费者组里的leader在收到JoinGroupResponse之后,会按照其中指定的分区分配策略进行分区分配,每一个分区分配策略就是一个PartitionAssignor接口的实现,下图是其继承结构:

PartitionAssignor接口中定义了Assignment和Subscription两个内部类。进行分区分配需要两方面的数据:

Subscription:Metadata中记录的集群元数据和每一个消费者成员的订阅信息,为了增强用户对分配结果的控制,就将用户订阅信息和一些影响分配的用户自定义信息封装成Subscription,比如用户自定义每一个消费者的权重。其中topics集合表示消费者订阅的topic集合,userData表示用户自定义数据。并且提供subscription()方法用于添加自定义数据,在创建JoinGroupRequest的时候会用到这个方法

Assignment: 保存了分区分配的结果,partitions表示分配给某消费者的TopicPartition集合,userData是用户自定义数据

assign方法:需要子类实现的完成分区分配的抽象方法

onAssignment方法:是在每个消费者收到leader分配结果时的回调函数,此调用发生在解析SyncGroupResponse之后。

如果开发人员需要利用userData来控制分区分配结果,就不能继承AbstractPartitionAssignor类,而是需要自己实现PartitionAssignor接口

RangePartitionAssignor: 针对每一个topic, n = 分区数/消费者数量,

m=分区数%消费者数量,前m个消费者每个分配n+1个分区,后面的 (消费者数量-m)个消费者每个分配n个分区

RoundRobinAssignor: 将所有的Topic和Partition按照字典顺序排序,然后对每个Consumer进行轮询分配

PartitionAssignor分析相关推荐

  1. Java面试题库,腾讯面试需要Java转go

    第1章快速入门 1.1 Kafka简介 1.2 以Kafka为中心的解决方案 1.3 Kafka核心概念 1.4 Kafka源码环境 第2章生产者 2.1 KafkaProducer 使用示例 2.2 ...

  2. 消费者rebalance机制分析

    一 触发rebalance的时机 # 有新的消费者加入 # 有消费者宕机或者下线 # 消费者主动退出消费者组 # 消费者组订阅的topic出现分区数量变化 # 消费者调用unsubscrible取消对 ...

  3. GroupCoordinator分析

    一 核心字段 brokerId: Int 该GroupCoordinator所在的节点 groupConfig: GroupConfig 记录了消费者组中consumer session过期的最小时长 ...

  4. kafka-分区重分配及相关源码分析

    tips:本文源码对应的kafka版本是2.3.1,源码分支2.3 分区重分配及相关源码分析 简单示例 kafka消费者分区重分配 消费者分区重分配简介 分区重分配的策略 RangeAssignor ...

  5. 你绝对能看懂的Kafka源代码分析-KafkaConsumer类代码分析

    目录: <Kafka Producer设计分析> <KafkaProducer类代码分析> <RecordAccumulator类代码分析> <Sender类 ...

  6. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  7. 2022-2028年中国自动驾驶系统行业现状调研分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国自动驾驶系统行业市场行业相关概述.中国自 ...

  8. 2022-2028年中国阻尼涂料市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻尼涂料行业市场行业相关概述.中国阻尼涂 ...

  9. 2021-2028年中国阻燃装饰行业市场需求与投资规划分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻燃装饰行业市场行业相关概述.中国阻燃装 ...

最新文章

  1. 桌面图标不透明的小问题处理
  2. Debug常用命令 精简版本
  3. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.12. File-5.22...
  4. 基于Tablestore管理海量快递轨迹数据架构实现
  5. vue.js点击更多加载更多数据,双数组合并
  6. fpga运算服务器_SparseArray替代HashMap来提高性能
  7. 题目29:计算表达式
  8. 基于matlab的车牌识别
  9. VBto Converter代码转换工具最新V2.89版
  10. markdown中编写数学公式的常用 latex 语法
  11. iPad PPT演示录屏踩坑及后续ffmpeg处理
  12. hutool excel导出
  13. matlab 神经识别取整数_Matlab取整
  14. VsCode必备插件
  15. 华为奋力前行,以灵活多变的方式突围,成效显著
  16. FFMPEG直播推流
  17. C# 设置线程的默认CultureInfo
  18. cocos2dx[2.x](14)--音乐音效SimpleAudioEngine
  19. 元宇宙数字藏品,打造数字经济产业,实现全新业态升级
  20. 我与python约个会:31.企业级开发进阶3.1:发送电子邮件

热门文章

  1. mybatis mysql uuid_spring boot整合mybatis利用Mysql实现主键UUID的方法
  2. cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值
  3. dismiss和remove_remove的近义词辨析
  4. linux中的fbset工具,Fluxbox (简体中文)
  5. 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传
  6. 分治法的关键特征_经典算法思想2——分治(Divide-and-Conquer)
  7. 使用pandas 按同一列名称合并,并解决concat() got an unexpected keyword argument ‘join_axes‘报错
  8. linux 日志报告生成器,Linux报告生成器工具awk
  9. 华为p20支持手机云闪付吗_余承东:明年华为智能手机全面支持鸿蒙系统
  10. linux 1t 分区,Linux磁盘管理——swap分区