kafka-保证数据不重复-生产者开启幂等性和事务的作用?

news/2025/2/2 1:44:18/

1. 生产者开启幂等性为什么能去重?

1.1 场景

适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的ACK消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消息的重复现象,而幂等性就是为了解决该问题。

1.2 去重原理

通过3个值的唯一性去重:

  1. PID:生产者ID
  2. 分区号
  3. seq:单调递增

 2. 生产者开启事务为什么能去重?

2.1 场景

当数据发送到broker时,失败了,导致ack没有应答成功,如果没有开启事务,那么这条数据可能只落在了leader的磁盘上,没有落在flower的磁盘上,此时会进行重试,再把数据发送一遍,那么leader的数据就重复了。

2.2 去重原理

如果开启事务那就会有原子性,数据要么写成功落盘,要么写失败回滚。

当数据发送到broker时,失败了,导致ack应答失败,这条数据可能只落在了leader的磁盘上,没有落在flower的磁盘上,如果开启了事务,那么会进行回滚,将leader的数据回滚,然后会进行重试,再把数据发送一遍,就解决了重复问题。


http://www.ppmy.cn/news/1008755.html

相关文章

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来获取相机当前数据吞吐量(C#) Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在BGAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过BGAPI SDK获取…

Docker网络模型详解

目录 一、Docker网络基础 1、端口映射 使用-P选项时Docker会随机映射一个端口至容器内部的开放端口 使用docker logs查看Nginx的日志 查看映射的随机端口范围 2、使用-p可以指定要映射到的本地端口。 Local_Port:Container_Port : 端口映射参数中指定了宿主…

Java超级玛丽小游戏制作过程讲解 第三天 创建并完成常量类02

public class StaticValue {//背景public static BufferedImage bgnull;public static BufferedImage bg2null;//马里奥向左跳跃public static BufferedImage jump_Lnull;//马里奥向右跳跃public static BufferedImage jump_Rnull;//马里奥向左站立public static BufferedImage…

MonthCalendar控件基本使用

作用:日历控件,用于选择年月日 常用属性: 是否显示今天、今天上面加一个圆圈、显示多少周 显示当前日期 常用事件: 日期变化 后台代码示范: //日历日期发生变化时触发该函数private void monthCalendar1_DateChang…

spring boot 配置文件和属性注入

文章目录 配置文件位置和路径自定义配置文件 属性注入添加yaml文件的支持 配置文件 位置和路径 当我们创建一个 Spring Boot 工程时,默认 resources 目录下就有一个 application.properties 文件,可以在 application.properties 文件中进行项目配置&am…

Rust 编程小技巧摘选(6)

目录 Rust 编程小技巧(6) 1. 打印字符串 2. 重复打印字串 3. 自定义函数 4. 遍历动态数组 5. 遍历二维数组 6. 同时遍历索引和值 7. 迭代器方法的区别 8. for_each() 用法 9. 分离奇数和偶数 10. 判断素数(质数) Rust 编程小技巧(6) 1. 打印…

记录 运维三剑客一件部署的的docker-compose,yml文件

CAdvisor: 收集 InfluxDB: 存储 Grafana: 展示 version: 3.1volumes:grafana_data: {}services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DBcadvisorports:- "8083:8083"- "8086:8086"volumes:- ./data/inf…

解决群晖Transmission外网无法访问问题

文章目录 环境描述和问题现象问题分析具体方法 环境描述和 群晖内网ip为:192.168.1.6 域名为www.xxxx.xxx 公网ip为122.122.XX.XX 群晖中已配置ssl证书 transmission是社群套件安装的 问题现象 在家中使用192.168.1.6:9091可正常打开transmission的web页面 使用h…