“Kafka面试攻略:核心问题与高效回答”
1,生产者发送消息的原理
发送消息的过程中,涉及到两个线程,main线程和sender线程,main线程会创建一个双端队列,main线程向双端队列发送消息,sender线程从双端队列里拉取消息,发送给Kafka Broker。
2,如何给数据去重
幂等性就是指生产者不论向Broker发送多少次重复数据,Broker端都只会持久化一条,保证了数据不重复
ACK级别调成-1,分区的副本数要大于等于二,ISR最小副本数也要大于等于二
什么是ISR ISR就是指只保留存活的leader和follower的队列
3,如何保证数据的安全性
kafka提供了三种ACK级别
1,acks=0:生产者向leader发送消息不会等待应答,认为消息发送成功,这种方式效率较高,可靠性最差,可能导致数据的丢失。
2,acks=1:生产者向leader发送消息给leader,leader拿到数据后应答之后挂掉了还没来得及同步给follower,但是生产者接到应答后觉得已经发送成功了,这个leader挂掉后会重新选举一个leader,这个时候leader向生产者要数据,但是生产者觉得已经发送成功了,就不会给新的leader发数据,导致数据的丢失
3,acks=-1,生产者向leader发送消息,leader开始同步给其他的follower,leader和ISR队列里面的所有节点收齐数据后应答,否则不会走,但是此时有一个follower出问题了迟迟同步不了,这个时候就需要用到ISR,ISR里面都是存活的leader,如果有follower挂了就会被踢出ISR队列。默认时间是30秒。
这还不是最可靠的
数据完全可靠的条件=ACK级别设置为-1+分区副本数大于等于二ISR里面应答的最小副本数大于等于2
4.如何解决数据积压的问题?
1,如果是Kafka的消费能力不足,则可以考虑增加主题Topic的分区数,并同时提升消费组的消费者数量。
2,如果是下游的数据处理不及时;提高每批次拉取的数量,批次拉取数据过少使处理的数据小于生产的数据,也会数据积压。
5,Kafka对leader的选举机制。
Kafka集群中会有一个broker的Controller会被选举位controller leader,负责管理集群broker的上下线,所有topic分区副本分配和leader选举。
leader的选举规则:首先要在ISR里存活,按照ar的排名在前的优先。
6,Kafka如何提高吞吐量?
1,如果是生产者要提高吞吐量的话,
首先要调整batch.size的大小,默认的批次是16k,linger.ms等待时间,,修改为5-100ms,compression.cype:压缩snappy,设置缓冲区大小RecordAccumlator 修改为64m。
2,如果是要提高消费者吞吐量的话,
1,如果是Kafka的消费能力不足,则可以考虑增加主题Topic的分区数,并同时提升消费组的消费者数量。
2,如果是下游的数据处理不及时;提高每批次拉取的数量,批次拉取数据过少使处理的数据小于生产的数据,也会数据积压。
7,如何做到高效读写数据
因为Kafka本身是分布式集群,可以采用分区技术,并行度高,读写数据采用稀疏索引,可以快速定位要消费的数据,顺写磁盘,页缓存+零拷贝技术。
8,offect机制
我们要如何指定offect消费
Kafka提供了seek方法,可以让我们从分区位置开始消费。
面试题:问:假如 kafka 崩了,重启之后,想继续消费,怎么做?
1、确定要消费的主题是哪几个
2、使用命令或者其他的组件查看 __consumer_offset 主题下的偏移量信息,找到我们关心的主题再崩溃之前消费到了哪里。
3、使用 java 代码,里面有一个非常重要的方法 seek,指定需要消费的主题,分区以及偏移量,就可以继续消费了。
offect位移
记录消费到哪里的这个值,就是偏移量。
记录:哪个主题,哪个分区,哪个位置。
相关文章:
“Kafka面试攻略:核心问题与高效回答”
1,生产者发送消息的原理 发送消息的过程中,涉及到两个线程,main线程和sender线程,main线程会创建一个双端队列,main线程向双端队列发送消息,sender线程从双端队列里拉取消息,发送给Kafka Broke…...
C++ 多线程std::thread以及条件变量和互斥量的使用
前言 本文章主要介绍C11语法中std::thread的使用,以及条件变量和互斥量的使用。 std::thread介绍 构造函数 std::thread 有4个构造函数 // 默认构造函,构造一个线程对象,在这个线程中不执行任何处理动作 thread() noexcept;// 移动构造函…...
新华三H3CNE网络工程师认证—子接口技术
子接口(subinterface)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。在VLAN虚拟局域网中,通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上,无法使用单台路由器的一个物理接口…...
【MySQL】InnoDB内存结构
目录 InnoDB内存结构 主要组成 缓冲池 缓冲池的作用 缓冲池的结构 缓冲池中页与页之间连接方式分析 缓冲池如何组织数据 控制块初始化 页面初始化 缓冲池中页的管理 缓冲区淘汰策略 查看缓冲池信息 总结 变更缓冲区-Chang Buffer 变更缓冲区的作用 主要配置选项…...
基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)
#1024程序员节|征文# 博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…...
蓝桥杯每日真题 - 第19天
题目:(费用报销) 题目描述(13届 C&C B组F题) 解题思路: 1. 问题抽象 本问题可以看作一个限制条件较多的优化问题,核心是如何在金额和时间约束下选择最优方案: 动态规划是理想…...
CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117
CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak清空 /etc/yum.repos.d 文件夹 sudo rm -rf /etc…...
Spark SQL大数据分析快速上手-完全分布模式安装
【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…...
Java面试题2024-Java基础
Java基础 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程 2、…...
局域网协同办公软件,2024安全的协同办公软件推荐
在2024年,随着数字化转型的深入和远程工作需求的增加,协同办公软件已成为企业提升工作效率、优化沟通流程的重要工具。 以下是一些值得推荐的安全的协同办公软件: 钉钉 功能全面:钉钉是一款综合性极强的企业级协同软件ÿ…...
osg、osgearth简介及学习环境准备
一、osg简介(三维场景图渲染与调度引擎) OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了&…...
nodejs基于微信小程序的云校园的设计与实现
摘 要 相比于传统的校园管理方式,智能化的管理方式可以大幅提高校园的管理效率,实现了云校园管理的标准化、制度化、程序化的管理,有效地防止了云校园信息的不规范管理,提高了信息的处理速度和精确度,能够及时、准确地…...
uni-app快速入门(十)--常用内置组件(下)
本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉,组件的官方介绍见: textarea | uni-app官网uni-app,un…...
golang基础
在 Go 中字符串是不可变的,例如下面的代码编译时会报错: cannot assign to s[0] 但如果真的想要修改怎么办呢?下面的代码可以实现: var s string "hello" s [ 0 ] c s : "hello" c : [] b…...
Selenium + 数据驱动测试:从入门到实战!
引言 在软件测试中,测试数据的多样性和灵活性对测试覆盖率至关重要。而数据驱动测试(Data-Driven Testing)通过将测试逻辑与数据分离,极大地提高了测试用例的可维护性和可扩展性。本文将结合Selenium这一流行的测试工具࿰…...
LLaMA与ChatGLM选用比较
目录 1. 开发背景 2. 目标与应用 3. 训练数据 4. 模型架构与规模 5. 开源与社区支持 6. 对话能力 7. 微调与应用 8. 推理速度与资源消耗 总结 LLaMA(Large Language Model Meta AI)和 ChatGLM(Chat Generative Language Model)都是强大的大型语言模型,但它们有一…...
GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性
产品描述 GPTZero 是一款先进的AI文本检测工具,专为识别由大型语言模型(如ChatGPT、GPT-4、Bard等)生成的文本而设计。它通过分析文本的复杂性和一致性,判断文本是否可能由人类编写。GPTZero 已经得到了超过100家媒体机构的报道&…...
C/C++ 优化,strlen 示例
目录 C/C optimization, the strlen examplehttps://hallowed-blinker-3ca.notion.site/C-C-optimization-the-strlen-example-108719425da080338d94c79add2bb372 揭开优化的神秘面纱... 让我们来谈谈 CPU 等等,SIMD 是什么? 为什么 strlen 是一个很…...
【动手学深度学习Pytorch】1. 线性回归代码
零实现 导入所需要的包: # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集:假设w[2, -3.4],b4.2,存在随机噪音&…...
深入理解PyTorch中的卷积层:工作原理、参数解析与实际应用示例
深入理解PyTorch中的卷积层:工作原理、参数解析与实际应用示例 在PyTorch中,卷积层是构建卷积神经网络(CNNs)的基本单元,广泛用于处理图像和视频中的特征提取任务。通过卷积操作,网络可以有效地学习输入数…...
从“共和国之辉”到AI原生应用:一个关于“哥布林”诞生的技术启示录
从“共和国之辉”到AI原生应用:一个关于“哥布林”诞生的技术启示录 2025年7月,一篇名为《Where the goblins came from》的文章在Hacker News上引发了超过710票的热议。当大多数技术评论者将目光聚焦于AI模型的最新突破时,这篇来自OpenAI的文…...
ComfyUI-Impact-Pack完整安装指南:解决AI图像增强插件功能缺失问题
ComfyUI-Impact-Pack完整安装指南:解决AI图像增强插件功能缺失问题 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地…...
IDEA 2023.2 版本中,如何一键开启Services面板管理你的Spring Boot微服务集群?
IDEA 2023.2 版本中如何高效管理Spring Boot微服务集群 微服务架构的流行让开发者面临一个现实挑战:如何在本地开发环境中高效管理多个同时运行的Spring Boot服务。传统方式需要逐个启动、切换终端查看日志,既浪费时间又容易造成混乱。JetBrains IDEA作为…...
基于MCP的AI智能体:自动化与优化亚马逊DSP广告实战指南
1. 项目概述:用AI智能体管理亚马逊DSP广告如果你正在寻找一种更高效、更智能的方式来管理亚马逊需求方平台(Amazon DSP)的广告活动,那么这个项目可能就是为你准备的。作为一个在程序化广告领域摸爬滚打了十多年的从业者࿰…...
Argo CD 集成 Helmfile 插件:实现 GitOps 下复杂应用声明式部署
1. 项目概述与核心价值如果你正在使用 Argo CD 管理 Kubernetes 集群,并且你的应用清单是由 Helmfile 来编排的,那么travisghansen/argo-cd-helmfile这个项目很可能就是你一直在寻找的“粘合剂”。简单来说,它是一个专门为 Argo CD 设计的 He…...
Laravel RSS聚合器larafeed:现代化内容聚合后端解决方案
1. 项目概述:一个为Laravel打造的现代化RSS聚合器如果你正在用Laravel构建一个内容聚合平台、新闻阅读器,或者只是想为自己的个人博客添加一个“我最近在读什么”的订阅墙,那么你很可能需要处理RSS或Atom源。手动解析这些XML格式的源、处理缓…...
java+uniapp集成unipush2实现消息推送
一、开通uniPush2.0 1.实名认证 登录DCloud开发者中心,通过实名认证 2.进入UniPush控制台 HBuilderX中打开项目的manifest.json文件 导航在“App模块配置” → 项的“Push(消息推送)” → “UniPush”下点击配置 或者申请开通。 3.配置应用信息 在UniPush开通界面…...
双强联袂,数智共舞 | 中聚信 × 金蝶启联巅峰对话,共探财税未来新航道
3 月 26 日,由金蝶软件(中国)有限公司、贵州启联科技有限公司联合主办,中聚信财税技术研究中心协办的「AI 时代 先进管理用金蝶」主题峰会,在贵阳国际生态会议中心圆满落幕。这场聚焦制造企业数字化转型与 AI 赋能管理…...
ncmdump工具完全攻略:解锁网易云音乐NCM格式转换的终极指南
ncmdump工具完全攻略:解锁网易云音乐NCM格式转换的终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密格式无法在其他播放器播放而烦恼吗?你是否经历过精心收藏的音乐只能…...
鸿蒙 App 的 Task + State 双核心架构
子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…...
