当前位置: 首页 > news >正文

Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

Kafka怎么做到避免消息重复消费的? 消费者组是什么?

消费者

1、订阅Topic(主题)
2、从订阅的Topic消费(pull)消息,
3、将消费消息的offset(偏移量)保存在Kafka内置的一Topic名字是_consumer_offsets的主题中,在Kafka的logs文件下能看到这👟文件,存放的是消息的偏移量数据
在这里插入图片描述

消费者组

在这里插入图片描述

1、订阅同一个Topic的消费者可以加入到一个consumer Group(消费者组)
2、消费者组中的consumer共享一个group_idconfigs,put(“group.id”,”XXX”);只要消费者的group_id一样,就属于同一个消费者组
3、消费者组保证每个topic下一个partition的消息只能被一个消费者组下一个消费者消费,避免消息的重复消费
如上图,当前只有一个消费者组订阅这个Topic,消费者组里只有一个消费者,那么当前Topic中所有分区的消息都由这个消费者消费
4、当消费者端业务逻辑比较复杂,消费消息比较慢,这个时候我们可以向消费者组中多加几个消费者(横向扩展)来提升消费速度。无非就是消费者端一套代码再在几台新的服务器部署一套,加入到同一个group_id下,同时从主题消费消息
横向扩展后,Kafka会对消息的分区与消费者的对应关系重新调整,这就是rebalance(再平衡机制)
在这里插入图片描述
如上图,消费者组扩展一个消费者后,消费者1、2分别消费两个分区的消息
我们可以看到,一个分区对应一个消费者,但是一个消费者可以对应多个分区

如果上面结构还不够,两个消费者消费速度依然跟不上,那么我们还可以继续添加消费者,添加到4个消费者,此时主题分区与消费者的关系再次发生变化,需要再平衡,此时一个消费者消费一个分区消息,达到并行消费的效果
在这里插入图片描述

上面步骤我们看到了消息的分区可以横向扩展,消息的消费者也可以横向扩展,向消费者组添加消费者是横向扩展消费能力的主要方式,而消费者组是消费者的关键,消费者组来保证,主题下的消息不管由多少个分区,每条消息只会被一个消费者消费,就不会引起重复消费的情况

一般最佳情况是:消费者数 = 分区数,一个分区对应一个消费者,
消费者也不是越多越好,消费者数受限于分区数, 过多消费者会导致有的消费者没有分配分区导致空闲,如下图
在这里插入图片描述
所以对于高并发的场合,我们通常会给一个主题设置很多个分区,分区数多利于消费者横向扩张


上面是一个消费者组的情况,实际上对于一个Topic可以有不同的消费者组,如下图
在这里插入图片描述

  • 每个消费者组是相互独立的
  • 每个消费者组都可以拿到主题的全部数据

相关文章:

Kafka 入门到起飞 - Kafka怎么做到保障消息不会重复消费的? 消费者组是什么?

Kafka怎么做到避免消息重复消费的? 消费者组是什么? 消费者: 1、订阅Topic(主题) 2、从订阅的Topic消费(pull)消息, 3、将消费消息的offset(偏移量)保存在K…...

MongoDB 的增、查、改、删

Monogo使用 增 单条增加 db.member.insertOne({"name":"张三","age":18,"create":new Date()}) db.member.insert({"name":"李四1","age":18,"create":new Date()}) db.member.insertOne(…...

mysql常用操作命令

mysql常用操作命令 mysql:单进程多线程模型,一个SQL语句无法利用多个cpu core 一:基本命令 0.查看当前连接数 show global status like Thread$; show variables like "%timeout%"; show variables like "log_%";1.查看当前连接状态 show processlist…...

数学建模常见模型汇总

优化问题 线性规划、半定规划、几何规划、非线性规划、整数规划、多目标规划(分层序列法)、动态规划、存贮论、代理模型、响应面分析法、列生成算法 预测模型 微分方程、小波分析、回归分析、灰色预测、马尔可夫预测、时间序列分析(AR MAMA.RMA ARTMA LSTM神经网络)、混沌模…...

C#使用LINQ查询操作符实例代码(二)

目录 六、连表操作符 1、内连接2、左外连接(DefaultIfEmpty)3、组连接七、集合操作 八、分区操作符 1、Take():2、TakeWhile():3、Skip():4、SkipWhile():九、聚合操作符 1、Count: 返回集合项数。 2、LongCount&…...

jenkinsfile小试牛刀

序 本文主要演示一下如何用jenkinsfile来编译java服务 安装jenkins 这里使用docker来安装jenkins docker run --name jenkins-docker \ --volume $HOME/jenkins_home:/var/jenkins_home \ -p 8080:8080 jenkins/jenkins:2.416之后访问http://${yourip}:8080,然后…...

C++ xmake构建

文章目录 一、xmake.lua二、xmake常用语句 一、xmake.lua --xmake.luaset_project("XXX")add_rules("mode.debug", "mode.release") set_config("arch", "x64")if is_plat("windows") then -- the release modei…...

推荐带500创作模型的付费创作V2.1.0独立版系统源码

ChatGPT 付费创作系统 V2.1.0 提供最新的对应版本小程序端,上一版本增加了 PC 端绘画功能, 绘画功能采用其他绘画接口 – 意间 AI,本版新增了百度文心一言接口。 后台一些小细节的优化及一些小 BUG 的处理,前端进行了些小细节优…...

wps图表怎么改横纵坐标,MLP 多层感知器和CNN卷积神经网络区别

目录 wps表格横纵坐标轴怎么设置? MLP (Multilayer Perceptron) 多层感知器 CNN (Convolutional Neural Network) 卷积神经网络 多层感知器MLP,全连接网络,DNN三者的关系 wps表格横纵坐标轴怎么设置? 1、打开表格点击图的右侧…...

rdb和aof

RDB持久化:原理是将Redis在内存中的数据库记录定时dump到磁盘上的RDB持久化AOF持久化:原理是将Redis的操作日志以追加的方式写入文件 rdb: 开启方式:客户端可以通过向Redis服务器发送save或bgsave命令让服务器生成rdb文件&#…...

TCP网络通信编程之网络上传文件

【图片】 【思路解析】 【客户端代码】 import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException;/*** ProjectName: Study* FileName: TCPFileUploadClient* author:HWJ* Data: 2023/7/29 18:44*/ public class TCPFil…...

Java中对Redis的常用操作

目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类,创建RedisTempla…...

链路追踪设计

...

Golang之路---02 基础语法——常量 (包括特殊常量iota)

常量 //显式类型定义const a string "test" //隐式类型定义const b 20 //多个常量定义 const(c "test2"d 2.3e 27)iota iota是Golang语言的常量计数器,只能在常量表达式中使用 iota在const关键字出现时将被重置为0,const中每新…...

Pytest学习教程_装饰器(二)

前言 pytest装饰器是在使用 pytest 测试框架时用于扩展测试功能的特殊注解或修饰符。使用装饰器可以为测试函数提供额外的功能或行为。   以下是 pytest 装饰器的一些常见用法和用途: 装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。可以创建可重…...

redis的如何使用

1、redis的使用 1.1windows安装 安装包下载地址:Releases dmajkic/redis GitHub 1.2 redis中常使用的几个文件 1.3 redis中运行 双击redis-server,既可以运行。 1.4使用redis客户单来连接redis 1.5redis的常用指标 redis-serve 服务端,端口号&am…...

MyBatis(二)

文章目录 一.MyBatis的模式开发1.1 定义数据表和实体类1.2 配置数据源和MyBatis1.3 编写Mapper接口和增加xxxMapper.xml1.4 测试我们功能的是否实现. 二. Mybatis的增删查改操作2.1 单表查询2.2 多表查询三.动态SQL的实现3.1 什么是动态SQL3.2 动态SQL的使用if标签的使用trim标…...

【【51单片机AD转换模块】】

代码是简单的&#xff0c;板子是坏的&#xff0c;电阻是识别不出来的 main.c #include <REGX52.H> #include "delay.h" #include "LCD1602.h" #include "XPT2046.h"unsigned int ADValue;void main(void) {LCD_Init();LCD_ShowString(1,1…...

Longest Divisors Interval(cf)

题意&#xff1a;给定一个正整数n&#xff0c;求正整数的区间[l&#xff0c;r]的最大大小&#xff0c;使得对于区间中的每个i&#xff08;即l≤i≤r&#xff09;&#xff0c;n是i的倍数。给定两个整数l≤r&#xff0c;区间[l&#xff0c;r]的大小为r−l1&#xff08;即&#xf…...

配置文件、request对象请求方法、Django连接MySQL、Django中的ORM、ORM增删改查字段、ORM增删改查数据

一、配置文件的介绍 1.注册应用的 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,app01.apps.App01Config, ]################中间件###############…...

【人生底稿】07:2017-2018:从Java后端到全栈,我如何用一年时间为北漂埋下伏笔

2017-2018&#xff0c;从纯Java后端到全栈开发&#xff0c;自学AngularJS、安卓&#xff0c;完成监控运维平台升级&#xff1b;2018年6月&#xff0c;跟着领导辞职北漂创业。14年老码农亲述&#xff1a;所有的沉淀&#xff0c;都是为了更好的出发。 一、开篇&#xff1a;2017&a…...

如何永久解锁加密文档?3步破解科学文库时间限制与功能封锁

如何永久解锁加密文档&#xff1f;3步破解科学文库时间限制与功能封锁 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。 项目地址…...

免费Figma中文界面插件终极指南:3分钟告别英文设计工具

免费Figma中文界面插件终极指南&#xff1a;3分钟告别英文设计工具 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾经因为Figma的英文界面而感到困惑&#xff1f;每天在设计时不…...

Phi-4-reasoning-vision-15B部署教程:内网验证+外网网关调试全流程避坑指南

Phi-4-reasoning-vision-15B部署教程&#xff1a;内网验证外网网关调试全流程避坑指南 1. 模型介绍 Phi-4-reasoning-vision-15B是微软推出的多模态视觉推理模型&#xff0c;具备强大的图像理解和分析能力。这个模型特别适合需要处理复杂视觉任务的场景&#xff0c;比如文档O…...

Qwen3.5-27B入门必看:Web界面操作+curl调用+错误排查全流程

Qwen3.5-27B入门必看&#xff1a;Web界面操作curl调用错误排查全流程 1. 快速了解Qwen3.5-27B Qwen3.5-27B是Qwen官方发布的视觉多模态理解模型&#xff0c;它不仅能够进行文本对话&#xff0c;还能理解图片内容。这个镜像已经在4张RTX 4090 D 24GB显卡的环境下完成部署&…...

Qwen3.5-4B-Claude-Opus-GGUF一键部署:CSDN镜像平台Web化推理服务上线指南

Qwen3.5-4B-Claude-Opus-GGUF一键部署&#xff1a;CSDN镜像平台Web化推理服务上线指南 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型&#xff0c;重点强化了结构化分析、分步骤回答、代码与逻辑类问题的处理…...

Qwen3-ForcedAligner-0.6B在ASR质检中的应用:快速验证时间戳准确性

Qwen3-ForcedAligner-0.6B在ASR质检中的应用&#xff1a;快速验证时间戳准确性 1. 引言&#xff1a;ASR质检中的时间戳痛点 在语音识别(ASR)系统的实际应用中&#xff0c;时间戳准确性常常是被忽视却至关重要的指标。想象这样一个场景&#xff1a;你开发了一个会议记录系统&a…...

YOLO X Layout在新闻行业的应用:版面自动排版

YOLO X Layout在新闻行业的应用&#xff1a;版面自动排版 每天清晨&#xff0c;当大多数人还在睡梦中时&#xff0c;新闻编辑部的排版编辑已经开始了一天中最紧张的工作&#xff1a;将记者们连夜赶制的稿件、摄影师捕捉的精彩瞬间、设计师制作的图表&#xff0c;精准地排列在有…...

什么是模型存储

模型存储的理解 模型存储是指将训练好的机器学习模型保存到磁盘&#xff0c;以便后续直接使用而无需重新训练。 为什么需要模型存储&#xff1f; # 没有模型存储&#xff1a;每次使用都要重新训练 model train_model(data) # 可能需要几小时 prediction model.predict(ne…...

Linux 命令mkdir详细教程

Linuxmkdir命令详细教程一、mkdir命令的基本功能mkdir&#xff08;Make Directory&#xff09;是 Linux 系统中用于创建新目录&#xff08;文件夹&#xff09;的基础命令。它支持一次性创建单个或多个目录&#xff0c;以及递归创建多层目录结构&#xff0c;是文件系统操作中最常…...