kakfa消费者组集群化原理

2024-01-25 09:58
文章标签 集群 原理 消费者 kakfa

本文主要是介绍kakfa消费者组集群化原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

kakfa消费者组集群化原理

  • kafka怎样选出leader消费者?
  • 一、怎样为每个消费者组选择出唯一协调者?
    • 从源码看看怎样选出唯一的协调者?
    • 总结
  • 二、协调者从消费者组中选出leader消费者
    • 这个leader消费者的职责是什么?
    • leader consumer如何和非leader节点的consumer进行通信?
    • 为什么采取协调者这种机制,还有其他方案吗?
  • 总结


kafka怎样选出leader消费者?

本文主要介绍 kafka consumer组是通过什么机制,选择出leader和follower消费者?

一、怎样为每个消费者组选择出唯一协调者?

从源码看看怎样选出唯一的协调者?

在这里插入图片描述

每个消费者,分别随机找一个broker进行通信,询问这个broker的找出该消费者组的协调者是谁。
如何做到这步:consumer内部一个coordinator类,负责消费者协调工作。
coordinator.ensureCoordinatorReady(),发送寻找组协调者的请求sendGroupCoordinatorRequest,消息类型是 GROUP_COORDINATOR
在这里插入图片描述

broker收到请求后, kafkaApis进行处理:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

意思是:使用组名称的hash值%这个topic的分区数量,得到指定的一个分区,这个分区leader所在节点就是组协调者的节点,所有消费者计算出的协调者节点都是一样的

二、协调者从消费者组中选出leader消费者

这个leader消费者的职责是什么?

leader消费者的职责: 制定消息消费的方案,发给协调者的broker
非leader的消费者:协调者通知它是follower,就发消息给协调者,等待分区分配
协调者:收到leader分配方案,等待所有本组消费者到期,分配消息消费方案

leader consumer如何和非leader节点的consumer进行通信?

通过协调者broker

为什么采取协调者这种机制,还有其他方案吗?

consumer之间没有直接通信,降低架构发复杂度

其他方案:如果不进行新的技术,采用在zk上精选leader也是可以的,缺点:zk的读写就会变多,选举压力转移到zk上。

总结

提示:这里对文章进行总结:
在这里插入图片描述

选举主消费者是通过broker协调者,broker协调者选举leader,leader指定消息消费方案,下发给协调者,协调者把方案下发给所有消费者(包括leader消费者)。

与现实生活对照就像:选举一个领导,leader消费者是二把手,二把手指定任务计划,提交给领导,领导再下发任务,二把手也要干活。

这篇关于kakfa消费者组集群化原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642915

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意