Kafka消息不丢失与重复消费问题解决方案总结

在这里插入图片描述

1. 生产者层面

在这里插入图片描述

异步发送与回调处理

  • 异步发送方式:生产者一般使用异步方式发送消息,异步发送有消息和回调接口两个参数。在回调接口的重写方法中,可通过异常参数判断消息发送状态。若消息发送成功,异常参数为null;若发送失败,可记录日志,并重发消息或后期补偿。

重试机制

  • 解决网络抖动问题:针对消息发送失败(如网络抖动),可利用Kafka提供的重试机制,通过配置设置重试次数,解决因网络不稳定导致的消息发送失败问题,确保消息发送成功。

2. Broker层面

在这里插入图片描述

发送确认机制acks

  • acks值含义:ack有三个值(0、1、all),代表broker分区中保存数据的确认情况。
  • ack = 0时,生产者无需broker响应确认就认为消息发送成功,效率最高但消息丢失概率大;
  • ack = 1(默认值),leader副本保存成功后给生产者发送确认,生产者收到确认后认为消息发送成功;
  • ack = all 时,所有副本都成功保存数据后才给生产者发送确认,性能最低但能最大程度保证消息不丢失。
  • 实际生产环境中,最低应设置ack = 1。

3. 消费者层面

在这里插入图片描述

手动提交偏移量

  • 避免自动提交问题:默认情况下消费者每隔五秒自动提交消费偏移量,在重平衡过程中可能导致重复消费或丢失数据。
  • 为解决此问题,需禁用自动提交偏移量功能,改为手动提交。
  • 消费数据时,消费多少就提交多少偏移量,若消费者宕机则不提交,确保偏移量准确,避免重复消费或丢失。

同步加异步组合提交

  • 组合提交优势:Kafka提供了同步提交和异步提交两种方式。同步提交会阻塞,异步提交虽不阻塞但可能因消费失败导致偏移量不准确,所以采用同步加异步组合提交是较好的选择。具体代码为在消费完消息后先设置异步提交,最后在finally代码块中设置同步提交。

在这里插入图片描述

4. 消息重复消费问题

手动提交与幂等方案

  • 解决重复消费步骤:解决消息重复消费问题与解决消费者消息丢失问题类似,第一步也是关闭自动提交偏移量,开启手动提交偏移量,提交方式采用同步加异步。若仍担心消息重复,可增加幂等方案。

在这里插入图片描述


重平衡概念及触发条件

  • 概念:重平衡是指在Kafka消费者组中,当消费者组成员发生变化(如消费者加入或离开)或订阅的主题分区发生变化时,Kafka会重新分配每个消费者负责的分区,以实现负载均衡的过程。
  • 触发条件:消费者组内消费者数量变化(如消费者加入或离开)、订阅主题分区变化、消费者主动发起重平衡请求等情况会触发重平衡。

在这里插入图片描述

重平衡可能导致的问题

  • 重复消费:默认情况下消费者每隔五秒自动提交消费偏移量。若消费者在消费过程中提交偏移量不及时(如已消费到偏移量6,但只提交到3),当发生重平衡后,新接手该分区的消费者会从上次提交的偏移量(3)继续往后消费,导致3 - 6之间的数据重复消费。
  • 数据丢失:若消费者宕机前提交的偏移量大于实际消费的偏移量(如实际消费到1,但偏移量提交到3),新接手的消费者从3继续消费,1 - 2之间的数据就会丢失。

解决重平衡导致问题的方法

  • 手动提交偏移量:禁用自动提交偏移量功能,改为手动提交。在代码中,消费多少数据就提交多少偏移量,如果消费者宕机则不提交,确保偏移量准确,避免重复消费或丢失。
  • 同步加异步组合提交偏移量:Kafka提供了同步提交和异步提交两种方式。同步提交会阻塞,异步提交虽不阻塞但可能因消费失败导致偏移量不准确,所以采用同步加异步组合提交是较好的选择。具体代码为在消费完消息后先设置异步提交,最后在finally代码块中设置同步提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux-centos-安装miniconda3

参考: 最新保姆级Linux下安装与使用conda:从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…

【每日学点鸿蒙知识】Taro、native层获取文件宽度、位置变化callback、数据迁移、oh_modules说明等

1、Taro开发HarmonyOS NEXT有相应的开发文档吗? Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力&#xf…

pycharm+anaconda创建项目

pycharmanaconda创建项目 安装: Windows下PythonPyCharm的安装步骤及PyCharm的使用-CSDN博客 详细Anaconda安装配置环境创建教程-CSDN博客 创建项目: 开始尝试新建一个项目吧! 选择好项目建设的文件夹 我的项目命名为:pyth…

前端(九)js介绍(2)

js介绍(2) 文章目录 js介绍(2)一、函数1.1函数的两种形式1.2函数的作用域1.3声明与提升 二、bom操作三、dom操作 一、函数 1.1函数的两种形式 //有参函数 //js中的函数只能返回一个值,如果要返回多个需要放在数组或对象中 function func(a,b){return ab } func(1,…

京准科普:车辆测速网络时间同步系统的概述

京准科普:车辆测速网络时间同步系统的概述 采用毫秒级标准NTP时间同步服务器检定区间测速系统主要用于指导测量车辆在特定区间内的平均速度,以确保交通法规的严格执行;以下是详细的解决方案: 1. 系统需求分析 高精度时间同步&am…

基于单片机的多功能视力保护器(论文+源码)

1.系统设计 多功能视力保护器在设计过程中能够对用户阅读过程中的各项数据信息进行控制,整体设计分为亮种模式,分别是自动模式,手动模式。在自动模式的控制下,当单片机检测当前光照不强且有人时就开启LED灯,并且会根据…

掌握大数据处理利器:Flink 知识点全面总结【上】

1.Flink的特点 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。 Flink主要特点如下: 高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟。结果的准确性。Flink提供了事件时间(event--time)和处理时间(proces…

阿里巴巴国际站自养号测评的详细步骤

阿里巴巴国际站是很多外贸企业获客的重要渠道。不过随着跨境电商的迅猛发展,掌握有效的运营策略对于提升企业竞争力来说至关重要。其中,自养号测评是一种有效的运营策略,它可以提升店铺的曝光度。下面是一些关键步骤和注意事项。 一、自养号的…

log4j2的Strategy、log4j2的DefaultRolloverStrategy、删除过期文件

文章目录 一、DefaultRolloverStrategy1.1、DefaultRolloverStrategy节点1.1.1、filePattern属性1.1.2、DefaultRolloverStrategy删除原理 1.2、Delete节点1.2.1、maxDepth属性 二、知识扩展2.1、DefaultRolloverStrategy与Delete会冲突吗?2.1.1、场景一&#xff1a…

WAV文件双轨PCM格式详细说明及C语言解析示例

WAV文件双轨PCM格式详细说明及C语言解析示例 一、WAV文件双轨PCM格式详细说明1. WAV文件基本结构2. PCM编码方式3. 双轨PCM格式详细说明二、C语言解析WAV文件的代码示例代码说明一、WAV文件双轨PCM格式详细说明 WAV文件是一种用于存储未压缩音频数据的文件格式,广泛应用于音频…

三大行业案例:AI大模型+Agent实践全景

本文将从AI Agent和大模型的发展背景切入,结合51Talk、哈啰出行以及B站三个各具特色的行业案例,带你一窥事件驱动架构、RAG技术、人机协作流程,以及一整套行之有效的实操方法。具体包含内容有:51Talk如何让智能客服“主动进攻”&a…

vulnhub靶场【Hogwarts】之bellatrix

前言 靶机:hotwarts-dobby,ip地址为192.168.1.69 攻击:kali,ip地址为192.168.1.16 都采用虚拟机,网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24扫描发现主机 信息收集 使用nmap扫描端…

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成Log4j1.x 及 原理分析

文章目录 Pre官网集成Log4j1.x步骤POM依赖使用第一步:编写 Log4j 配置文件第二步:代码 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging(JC…

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…

在Cloudflare Workers上搭建短链接服务

项目地址:https://github.com/xdanielf/ShortLinkCloudflare/ 这个GitHub项目是使用 Cloudflare Workers 构建的简单 URL 缩短器。它可以缩短较长的 URL 并提供丰富的社交媒体共享预览。包括流量分析、统计,缩略名、缩略图设置等等。 将缩短的 URL 重定…

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 (1)创建应用 这个key 第3步骤,配置到项目中locationGps.js 2.下载高德地图微信小程序插件 (1)下载地址 高德地图API | 微信小程序插件 (2)引入项目…

HALCON中用于分类的高斯混合模型create_class_gmm

目录 一、创建用于分类的高斯混合模型函数二、代码和效果展示三、相关函数 一、创建用于分类的高斯混合模型函数 create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)create_class_gmm创建用于分类的高斯…

移动 APP 设计规范参考

一、界面设计规范 布局原则: 内容优先:以内容为核心进行布局,突出用户需要的信息,简化页面导航,提升屏幕空间利用率.一致性:保持界面元素风格一致,包括颜色、字体、图标等,使用户在…

【竞技宝】LOL:IG新赛季分组被质疑

北京时间2024年12月31日,今天已经2024年的最后一天,在进入一月之后,英雄联盟将迎来全新的2025赛季。而目前新赛季第一阶段的抽签结果已经全部出炉,其中人气最高的IG战队在本次抽签中抽到了“绝世好签”引来了网友们的质疑。 首先介…

AIDD -人工智能药物设计- DrugChat:多模态大语言模型实现药物机制与属性的全方位预测

DrugChat:多模态大语言模型实现药物机制与属性的全方位预测 今天为大家介绍的是来自加州大学圣地亚哥分校谢澎涛团队的一篇论文。准确预测潜在药物分子的作用机制和性质对于推进药物发现至关重要。然而,传统方法通常需要为每个特定的预测任务开发专门的…