kafka会丢消息的时刻

十家面试,有八家会问的问题:“kafka会不会丢消息呢”。

在这里插入图片描述

有些情况下消息可能会消失。这可能是由于配置错误或误解Kafka的内部原理所致。本文将解释数据丢失可能发生的情况

Provider(Publisher):确认的时候

当消息被发送到发布者时,发布者等待来自代理的确认(ACK)。有三个可用的配置选项:

  • acks = all - 当所有副本都确认已保存消息时,代理才会返回ACK。
  • acks = 1 - 当领导副本保存消息时返回ACK,但不会等待副本执行相同的操作。
  • acks = 0 - 生产者不会等待来自领导副本的确认。

由于最后一个选项显而易见的是:发送并忘记,第二个选项可能会导致数据丢失。在某种情况下,生产者将收到消息已保存的确认,但leader副本在确认之后宕机了并且无法启动。当新的副本被选举时没有该消息,所以消息永远消失了。

在JVM中,默认情况下ack设置为1,而在golang中为all。正如您所看到的,不同语言实现存在差异,因此最好显式设置此值。

Provider(Publisher):缓冲区

为了提高性能(或减少网络使用),机器会启用缓冲。当调用发布方法时,消息不会立即发送,而是在缓冲区达到最大容量或给定的时间间隔内发送。 这些行为由batch.size(以字节为单位)和linger.ms参数控制。如果达到其中任何一个限制,消息将立即发送。所以,这需要特别强调:客户端将收到消息已发送的信息,但这并不是真的。所以,如果应用程序在刷新缓冲区之前崩溃,则数据将无法恢复。所以消息永远消失了。

请注意,这些参数可能因语言实现不同而不同。在JVM中,batch.size是缓冲区中的字节数(默认为16384字节),但在kafka-go中,该参数描述了缓冲区中的消息数(默认为100)。更重要的是,JVM用户默认将linger.ms设置为0,但kafka-go用户将其设置为1秒。

在JVM实现中,尽管设置linger.ms = 0,消息仍然可以一起发送。这发生在负载较重的情况下 - 时间相近的消息将被批处理。

20230218225637

Consumer(Subscriber):Offsets

在消费消息时,消费者(订阅者)将其当前偏移量发送到代理。这是数据丢失可能发生的地方。

想象一种情况,一个消费者接收了两条消息:A 和 B。所有消息都在并行处理。处理消息时,B 成功了,偏移量被提交。然而,在处理消息 A 时,出现了一个错误。因为消息 B 的偏移量更大,Kafka 将保存最新的偏移量,消息 A 将永远不会返回给消费者。所以消息永远消失了。

Broker:已提交并不意味着已保存到磁盘

Kafka 在 Linux 系统上将消息保存到文件系统缓存(filesystem cache)中,但不会等待消息持久化到硬盘上。 这意味着如果只有一个副本或 acks=1即使Broker返回了 ACK,Broker也可能崩溃并丢失消息。所以消息永远消失了。

Broker:已保存到硬盘并不意味着它不会消失

leader 与 follower 在数据同步上是有时间差的。 例如,当一个 follower 代理落后于 leader,但仍被认为是同步的(滞后时间由 replica.lag.time.max.ms 参数配置,默认为 500),然后 leader 崩溃。新的 leader 被选举出来,但它没有收到消息。所以消息永远消失了。

总结

Kafka 是一个具有高容量、一致性和延迟的优秀工具。另一方面,很多这些东西取决于生产者、消费者以及broker的配置。

本文列举了几点消息可能丢失的场景。所以,面试遇到这个问题,抛出去就好了

本文是我翻译的一篇英文:When you can lose messages in Kafka

初始我用了 ChatGPT翻译了一遍,算是感受了下 ChatGPT 的魅力。准确率80%吧。但别误会,我又人工检验和修改了一遍。

然后我又问了 ChatGPT 一个问题,它也给了我答案。如下图
在这里插入图片描述

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

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

相关文章

宕机了,Redis 如何避免数据丢失?

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 8 分钟。 来自:juejin.cn/post/7193597571305046071 前言AOF 日志是如何实现的写后日志的优势与风险日志的写回策略日志的重写 重写的作用重写的过程RDB快照的原理混合 AOF/RDB总结 前言 如果…

硬件大熊原创合集(2023/02更新)

技术2月份更新篇章: 问了ChatGPT几个硬件问题 智能开关保险丝选型&安规要求 智能墙壁开关电源篇——AC-DC概述 这个月花了很多的精力在梳理产品的技术架构,过程中总会发现很多自己尚且模棱两可的知识点,这让人有一种摸索的越多&#xff0…

足球、篮球、乒乓球的动作识别通用方案开源

北京冬奥会即将开幕,全民健身如火如荼。2020年夏季奥运会有46项体育项目,2022年冬奥会有15项体育项目,丰富的项目涉及的姿势标准也各有区别。运动员如何科学地进行体育锻炼、准确矫正健身动作?教练员如何借助技术提供更智能化的训…

电商导购CPS,淘宝联盟如何跟单实现用户和订单绑定

前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…

高考英语口语测试软件,练习英语口语的app有哪些

随着国际化的发展,英语越来越普遍。英语中口语也是很重要的成分之一。也是跟老外交流或者英语考试的重要考点之一。我们有很多方法锻炼口语。什么方法最快捷最有效方便?下面我们看看几款最受欢迎的英语口语练习app。 练习口语的app 1、口语侠 一款非常实…

几个常见的语音交互平台的简介和比较

1.概述 最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不同的语音识别平…

Chatbot UI老外在用的gpt网页版 搭建方法分享!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Chatbot UI 高仿ChatGPT官网,中文还支持贼好,界面美观度间距还需要打磨。是老外做的吗? ​ 环境部署 更新环境 apt update -y && apt upg…

小米多模网关通过telnet刷入改版固件,完美接入HASS

一、环境介绍 宿主机:树莓派3B Raspbian系统 HA安装方式:HASS系统使用hass.io一键脚本进行安装 多模网关:ZNDMWG03LM(软件版本v1.4.5_0012) 2、为什么要刷固件 A 、因为要把该多模网关接入到homeassistant&#xf…

国际交流学术英文写作hnu(仅供参考)

本文仅供参考,希望同学们继续加油!

用letax写毕业论文-- 中英文封面

一、中文封面: 中文封面主要是 姓名、专业、指导教师、培养单位 这几项对齐这里比较麻烦, 我是用 tabular 来描述这个部分,然后字数不够的补空格 i.e. \hspace*{0.67em}. 具体实现代码如下: 二、 英文封面 英文封面跟中文封面类…

新手请看这里,如何撰写一篇英文论文

第一次写英文论文,无论是期刊论文、还是会议论文,都是很苦很累的一件事情。 查找文献、阅读文献,当然,主要都得是英文的,再加上真正动手撰写,这些环节都在考验我们的英文阅读和写作能力。 在科研这条路上…

【中英文论文写作——图片和表格】

1. 前言 前期讲了论文头部和正文,接下来分享论文写作之图片和表格,属于锦上添花部分! 2. 图片和表格要求 图标要求:专业性,美观性,简洁性 Chart Suggestions: A Thought Starter (Andrew Abela) 3. 软件推…

ChatGPT能够帮留学生完成毕业论文写作吗?

ChatGPT采用交互式对话界面,根据用户输入的指令以近似人类交流的方式作出回应,自问世以来一直令世人为之惊叹。目前,ChatGPT已成为有史以来用户增长速度最快的应用程序。 与此同时,研究人员对学术写作的关注程度与日俱增。人工智能…

【论文写作】——设置中英文字体

打开文件 点击选项 选择高级 取消中文字体也应用于西文的勾选 然后选中全文,设置中文字体为宋体,设置英文字体为times new Roman。

谷歌学术中英文网址

之前用谷歌学术的时候一直用的是https://scholar.google.com/这个网址,这个是谷歌学术的国外版比较适合生成外文期刊格式的参考文献,如下图所示:   但国内写文献参考格式的时候大多是采用GPT格式,这个在谷歌学术国外版是直接生…

一个典型的语音识别系统

一个典型的语音识别系统 标签: 语音识别 2015-01-05 16:56 3966人阅读 评论(0) 收藏 举报 分类: 自然语言识别研究(9) 版权声明:本文为博主原创文章,未经博主允许不得转载。 一、语音识别技术 转载请表…

语音识别系列1:语音识别Speech recognition综述

目录 1 什么是语声识别VOICE RECOGNITION? 2 语声识别(VOICE RECOGNITION)和语音识别(SPEECH RECOGNITION)有什么区别? 3 语声识别(VOICE RECOGNITION)系统的类型 4 语音识别系统的类型 5 语音识别简…

语音识别-特征提取 (一)

一.语音的产生简介 1.1 发音器官 人体的语音是由人体的发音器官在大脑的控制下做生理运动产生的。人体发音器官由三部分组成:肺和气管、喉、声道。 肺是语音产生的能源所在。气管连接着肺和喉,是肺与声道的联系通道。喉是由一个软骨和肌肉组…

分享本周所学——人工智能语音识别模型CTC、RNN-T、LAS详解

本人是一名人工智能初学者,最近一周学了一下AI语音识别的原理和三种比较早期的语音识别的人工智能模型,就想把自己学到的这些东西都分享给大家,一方面想用浅显易懂的语言让大家对这几个模型有所了解,另一方面也想让大家能够避免我…

如何跟踪语音领域的技术

语音顶会 ICASSP 所有年份论文集下载地址:https://ieeexplore.ieee.org/xpl/conhome/1000002/all-proceedings Interspeech 所有年份论文集下载地址:https://www.isca-speech.org/archive/ 期刊 IEEE Transactions on Audio, Speech and Language Proces…