首页 > 其他分享 >kafka消费组和分区关系详解

kafka消费组和分区关系详解

时间:2024-02-21 09:55:36浏览次数:33  
标签:组和 消费 分区 主题 kafka 详解 Kafka Consumer 位移

原文链接:https://blog.csdn.net/weixin_42324471/article/details/121985212

消费组概念:
Consumer Group 是 Kafka 提供的可扩展且有容错性的消费者机制。一个组里面有多个消费者实例,这些消费者共享一个ID,称为Group ID。组内的所有消费者协调在一起来消费订阅主题(Subscribed Topics)的所有分区(Partition)
下面通过图来解释分组和分区的关系
假设某个主题,共有4各分区P0,P1,P2,P3,有两个消费组,消费组A共4各消费者:A0,A1,A2,A3, 消费组B共有2个消费者:B0,B1

具体分配图如下:

1、每个分区只能被一个消费组中的一个消费者所消费,
2、消费组中一个消费者可以消费多个分区。
3、多个消费组,每个消费组都可以消费topic中的所有数据,且消费位移之间互不影响。
4、一个消费组存在的消费者个数,大于分区数时,会出现消费组,未被分配到分区(如下图所示)。

 

消费位移简述。
Kafka 有新旧Consumer API 之分,老版本的 Consumer Group 把位移保存在 ZooKeeper 中,将位移保存在 ZooKeeper 外部系统的做法,最显而易见的好处就是减少了 Kafka Broker 端的状态保存开销,将服务器节点做成无状态的好处是可以自由地扩缩容,实现超强的伸缩性
kafka巨额吞吐量,会带来频繁读写,消费位移保存在zk中,会大量消耗集群性能,所以0.9版本后将消费位移保存到broker上的一个内部主题__consumer_offsets

保存在broker的优点:
满足频繁写入
可以持久化保存

新版本 Consumer 的位移管理机制其实就是将 Consumer 的位移数据作为一条条普通的 Kafka 消息,提交到 __consumer_offsets 中。位移主题就是普通的 Kafka 主题,可以手动地创建它、修改它,甚至是删除它。

位移主题有特定的消息格式,不可以随便向该主题发送消息

位移主题的key:<Group ID,主题名,分区名>
value保存的是具体的位移数值和相关元数据
其它两种格式:

用于保存Consumer Group信息的消息(不常见)
用于删除Group过期位移甚至删除group的消息,消息体是 null
Kafka集群中第一consumer启动时会创建位移主题,默认是分区50,副本数是3,也可以选择手动创建位移主题 ,但是最好不要修改这个默认值

 

标签:组和,消费,分区,主题,kafka,详解,Kafka,Consumer,位移
From: https://www.cnblogs.com/andy1234/p/18024532

相关文章

  • Vue3组合式API之getCurrentInstance详解
    Vue2中,可以通过this来获取当前组件实例; Vue3中,在setup中无法通过this获取组件实例,console.log(this)打印出来的值是undefined。在Vue3中,getCurrentInstance()可以用来获取当前组件实例  vue3官方文档解释let{proxy}=getCurrentInstance(); 在setup中分别打印下面......
  • 美团面试:Kafka如何处理百万级消息队列?
    美团面试:Kafka如何处理百万级消息队列?在今天的大数据时代,处理海量数据已成为各行各业的标配。特别是在消息队列领域,ApacheKafka作为一个分布式流处理平台,因其高吞吐量、可扩展性、容错性以及低延迟的特性而广受欢迎。但当面对真正的百万级甚至更高量级的消息处理时,如何有效地利......
  • Kafka
    Kafka架构图:相关概念如下:Producer:Producer即生产者,消息的产生者,是消息的入口。kafkacluster:Broker:Broker是kafka实例,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等…......
  • Nginx 在Linux中安装、使用、配置详解
    一、官网下载Nginx官网地址:http://nginx.org/en/download.html我下载的是最新稳定版 二、上传到服务器解压1、上传到指定的服务器地址上传的地址自己决定,我上传到/usr/Nginx。2、解压使用命令:tar-zxvf“你的Nginx压缩包”,我这里是:tar-zxvfnginx-1.24.0.ta......
  • mysql: show processlist 详解
    showprocesslist显示的信息都是来自MySQL系统库information_schema中的processlist表。所以使用下面的查询语句可以获得相同的结果:select*frominformation_schema.processlist了解这些基本信息后,下面我们看看查询出来的结果都是什么意思。Id:就是这个线程的唯一标......
  • 【转载】linux利用crontab添加定时任务详解
    crontab作用:添加,查询,删除系统计划任务的指令。[root@localhost~]#crontab[选项]选项:   -e:   编辑crontab定时任务   -l:   查询crontab任务   -r:   删除当前用户所有的crontab任务1234512345[root@localhost~]#crontab-e......
  • C语言循环队列详解
    前言相比于链队列,循环队列有着内存固定,效率高等特点,因而广泛应用于计算机的各个层面。本文主要介绍循环队列的概念和特点,列举一些循环队列的应用场景,以及给出用数组用C语言实现循环队列的代码。一、什么是循环队列?循环队列是一种特殊的线性表,特殊之处在于它只允许在表......
  • Unity基于AssetBundle资源管理流程详解
    在Unity游戏开发中,资源管理是一个非常重要的环节。随着游戏的发展,资源会变得越来越庞大,因此需要一种高效的资源管理方式来减少内存占用和加快加载速度。AssetBundle是Unity提供的一种资源打包和加载方式,可以将资源打包成一个独立的文件,然后在运行时进行加载和卸载。本文将详细介绍......
  • Unity MVC开发模式与开发流程详解
    在Unity游戏开发中,采用MVC(Model-View-Controller)模式是一种非常常见的设计模式。MVC模式将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。这种模式可以有效地分离应用程序的逻辑和用户界面,使得代码更易于维护和扩展。本文将详细介绍Unity中的MVC开发模式及其开发流......
  • placement服务详解
    一:简介1:作用监控云中所有硬件资源使用情况的组件比如,虚拟机都是占用了一部分物理机的资源,cpu,内存,磁盘等,有这个监控功能就能知道计算机的资源情况,哪些是空闲的为什么需要这个组件:就是openstack云计算平台需要知道在云中所有计算机集群中还有哪些计算机拥有足够的硬件资源能够......