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线程池核心参数原理及使用指南

《Java线程池核心参数原理及使用指南》本文详细介绍了Java线程池的基本概念、核心类、核心参数、工作原理、常见类型以及最佳实践,通过理解每个参数的含义和工作原理,可以更好地配置线程池,提高系统性能,... 目录一、线程池概述1.1 什么是线程池1.2 线程池的优势二、线程池核心类三、ThreadPoolE

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

Java 队列Queue从原理到实战指南

《Java队列Queue从原理到实战指南》本文介绍了Java中队列(Queue)的底层实现、常见方法及其区别,通过LinkedList和ArrayDeque的实现,以及循环队列的概念,展示了如何高效... 目录一、队列的认识队列的底层与集合框架常见的队列方法插入元素方法对比(add和offer)移除元素方法

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Spring IOC核心原理详解与运用实战教程

《SpringIOC核心原理详解与运用实战教程》本文详细解析了SpringIOC容器的核心原理,包括BeanFactory体系、依赖注入机制、循环依赖解决和三级缓存机制,同时,介绍了SpringBo... 目录1. Spring IOC核心原理深度解析1.1 BeanFactory体系与内部结构1.1.1

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.