Kafka消息丢失的场景有哪些

生产者在生产过程中的消息丢失
broker在故障后的消息丢失
消费者在消费过程中的消息丢失
ACK机制
ack3个可选值,分别是10-1
ack=0:生产者在生产过程中的消息丢失
简单来说就是,producer发送一次就不再发送了,不管是否发送成功。
ack=1broker在故障后的消息丢失
简单来说就是,producer只要收到一个分区副本成功写入的通知就认为推送消息成功了。这里有一个地方需要注
意,这个副本必须是leader副本。只有leader副本成功写入了,producer才会认为消息发送成功。
注意,ack的默认值就是1。这个默认值其实就是吞吐量与可靠性的一个折中方案。生产上我们可以根据实际情况进
行调整,比如如果你要追求高吞吐量,那么就要放弃可靠性。
ack=-1:生产侧和存储侧不会丢失数据
简单来说就是,producer只有收到分区内所有副本的成功写入的通知才认为推送消息成功了。
Offset机制
kafka消费者的三种消费语义
at-most-once:最多一次,可能丢数据
at-least-once:最少一次,可能重复消费数据
exact-once message:精确一次
Kafkapullpush?以及优劣势分析
Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull
push
Kafka遵循了一种大部分消息系统共同的传统的设计:producer将消息推送到brokerconsumerbroker拉取消
息。
一些消息系统比如ScribeApache Flume采用了push模式,将消息推送到下游的consumer
这样做有好处也有坏处:由broker决定消息推送的速率,对于不同消费速率的consumer就不太好处理了。
消息系统都致力于让consumer以最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率
远大于consumer消费的速率时,consumer恐怕就要崩溃了。
最终Kafka还是选取了传统的pull模式。
Pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。
Push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推
送。
如果为了避免consumer崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。
Pull模式下,consumer就可以根据自己的消费能力去决定这些策略。Pull有个缺点是,如果broker没有可供消费的消息,将导致consumer不断在循环中轮询,直到新消息到达。
为了避免这点,Kafka有个参数可以让consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特
定的量这样就可以批量发

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

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

相关文章

盼之代售 231滑块 csessionid 分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 部分python代码 url "…

STL关联式容器解析:map与set详解

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set 3.1.2 set的使用 3.2 map 3.2.1 map的介绍 3.2.2 map的使用 3.3 multiset 3.3.1 multiset的介绍 3.3.2 multiset的使用 3.4 multimap 3.4.1 multimap的介绍 3.4.2 multimap的使用 4.红黑树模拟实现…

贪吃蛇--C++实战项目(零基础)

视频地址:C语言必学项目:贪吃蛇! 贪吃蛇游戏框架 ├── 基础框架 │ ├── 头文件引入 │ ├── 常量和宏定义 │ └── 窗口初始化 │ ├── 数据结构系统 │ ├── Pos结构体(位置和颜色) │ ├── Snake结构体(蛇的属性) │ ├──…

unity资源领取反作弊工具加密器

https://assetstore.unity.com/packages/tools/utilities/anti-cheat-pro-2025-3006260元购码GUARDINGPEARSOFTWARE

FPGA设计中的信号完整性量化与优化:探索高速数字系统的关键路径

在高速FPGA设计中,信号完整性(Signal Integrity, SI)已成为确保系统稳定、可靠运行的核心要素之一。随着数据传输速率的不断提升和电路规模的日益复杂,信号在传输过程中受到的干扰和畸变问题日益凸显。因此,如何有效量…

`strncasecmp` 字符串比较函数

1) 函数的概念与用途 strncasecmp 是 C 语言中一个非常实用的字符串处理函数,它执行不区分大小写的字符串比较,但只比较前 n 个字符。这个函数的名字来源于"string n case-compare"(字符串前n个字符不区分大小写比较)。…

软件安装教程(一):Visual Studio Code安装与配置(Windows)

文章目录前言一、Visual Studio Code下载二、安装步骤(Windows)1. GUI安装2. 命令行安装三、首次启动后建议的快速配置(几分钟完成)四、常见问题 & 小贴士总结前言 Visual Studio Code(VS Code)是一款…

JavaSSM框架从入门到精通!第三天(MyBatis(二))!

四、Mapper 的动态代理1. 引入 在上面的 CURD 例子中,我们发现:Dao 层的实现类的每一个方法仅仅是通过 SqlSession 对象的相关 API 定位到映射文件 mapper 中的 SQL 语句,真正对数据库操作的工作实际上是有 Mybatis 框架通过 mapper 中的 SQL…

大模型应用发展与Agent前沿技术趋势(下)

Agent技术的行业应用与实践案例 金融领域的Agent应用 金融行业是大模型Agent技术应用最为广泛的领域之一,涵盖了风险评估、投资决策、客户服务等多个方面。在金融风控领域,Agent系统通过结合大模型的语义理解能力和强化学习的决策优化能力,能…

94. 城市间货物运输 I, Bellman_ford 算法, Bellman_ford 队列优化算法

94. 城市间货物运输 IBellman_ford 算法Bellman_ford 算法 与 dijkstra算法 相比通用性更强。dijkstra算法解决不了负权边的问题,因为Dijkstra基于贪心策略,一旦一个节点被从队列中取出(标记为已解决),它就假定已经找到…

如何使用Prometheus + Grafana + Loki构建一个现代化的云原生监控系统

如何使用 Prometheus + Grafana + Loki 构建一个现代化的云原生监控系统。这套组合被誉为监控领域的“瑞士军刀”,功能强大且生态极佳。 一、核心组件概念介绍 在搭建之前,深刻理解每个组件的角色和职责至关重要。 1. Prometheus(指标监控与时序数据库) 角色:系统的“核…

JavaScript Object 操作方法及 API

一、对象创建方式1.字面量创建(最常用)const obj { name: "张三", age: 25 };2.构造函数创建const obj new Object(); obj.name "李四";3.Object.create()(指定原型)const proto { greet: () > "…

pta乙级题目day1

第1天:输入输出与运算(6题)1001 害死人不偿命的(3n1)猜想(基础运算)★1006 换个格式输出整数(格式化输出)★1016 部分AB(数字提取)★★1046 划拳(多输入处理&…

在VSCode中配置.NET项目的tasks.json以实现清理、构建、热重载和发布等操作

在 VS Code 中配置 .NET 开发任务的完整指南 引言 重要提醒:对于 .NET 开发,强烈推荐使用 Visual Studio,它提供了最完整和稳定的开发体验。如果你像我一样"蛋疼"想要尝试 VS Code,请确保安装了 C# 开发扩展包&#x…

EmEditor文本编辑器v25.3.0专业版,专业文本编辑,高亮显示,无限撤消

[软件名称]: EmEditor文本编辑器v25.3.0专业版 [软件大小]: 37.7 MB [软件大小]: 夸克网盘 | 百度网盘 软件介绍 EmEditor 是一款功能强大且非常实用的文本编辑器。它启动速度快,完全可以替代 Windows 自带的记事本,轻松应对日常文本编辑任务。它对 …

【spring security】权限管理组件执行流程详解

🎯 权限管理组件执行流程详解 🏗️ 组件架构图 ┌─────────────────────────────────────────────────────────────┐ │ HTTP请求 …

redis怎么保障双写一致性

redis做为缓存,mysql的数据如何与redis进行同步呢?(双写一致性)候选人:嗯!就说我最近做的这个项目,里面有xxxx(根据自己的简历上写)的功能,需要让数据库与red…

异常值检测:孤立森林模型(IsolationForest)总结

目录一、前言二、孤立森林算法2.1 算法简介2.2 基本原理2.3 算法步骤2.4 异常分数计算方式2.5 python调用方式三、python代码示例四、小结五、参考学习一、前言 近期在研究构建寿命预测模型,相信很多数据人都懂建模的过程,其实有80%的时间都是在和数据处…

Docker容器化部署实战:Tomcat与Nginx服务配置指南

部署Tomcat搜索镜像 使用以下命令搜索可用的Tomcat镜像:docker search tomcat拉取镜像 拉取官方Tomcat镜像:docker pull tomcat创建专用目录 为Tomcat配置和数据创建专用目录:mkdir tomcat运行临时容器并复制配置文件 启动临时容器以复制配置…

Go语言实战案例-使用SQLite实现本地存储

在开发工具类软件、桌面应用或者移动端时,我们经常需要一个轻量级数据库来做 本地存储。相比 MySQL、Postgres 等服务型数据库,SQLite 体积小、零配置、单文件存储,非常适合这种场景。Go 语言通过 GORM SQLite 驱动 就能轻松实现。本文将带你…