大数据面试专题 -- kafka
1、什么是消息队列?
是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。
2、消息队列的应用场景?
主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰
3、什么是kafka?
kafka是一种基于订阅发布模式的高性能,高吞吐的实时的消息队列,是一个分布式系统,高性能的TCP网络协议进行的。
4、消息队列的模式主要分成两种模式?
a、生产者、消费者模式
b、消息队列模式
5、kafka的组成:
kafaka主要是由生产者、消费者、broker、zookeeper组成
其中:
生产者:生产数据
消费者:消费数据
broker:是kafka集群中服务器节点
topic:一个topic是kafka集群中数据流中的列别,存储数据
partition:一个topic可以分成多个分区。
replica:副本,实现kafka集群的容错
consumer group:消费者组,对于同一个消费者中的消费者可以消费同一个topic
offset:偏移量,对于消费者和partition来说,可以通过offset进行拉取数据。
6、在kafka集群中,对于分区也分leader和follower(在分区的层面上讨论)
leader :只负责读写数据
follower:负责同步数据,选举作用。
7、幂等性:
所谓的幂等性就是无论生产者向broker中发送多少条数据,broker只会持久化一条数据
实现原理:
当生产者生产完数据就会发送到分区中进行保存,此时kafka就会向生产者发送ack信号,当生产者接受的ack响应表示数据保存,否则就会重新发送一条相同的数据。
8、副本的ack机制:
1、acks=0,生产者只负责写入数据,不管数据是否写入成功,数据可能会丢失,性能是最好的。
2、acks=1,生产者将数据写入到leader中,返回写入成功,就会继续发送下一条数据
3、acks=-1/all,生产者将数据写入到leader中,同时也会将数据写入到副本中,当所有的数据都写入成功后,就返回写入成功,才会发送下一条数据。
9、生产者写入分区的策略:
1、轮询负载策略:将数据循环写入分区中
2、基于hash的分区策略:根据hash的值进入不同的分区中
3、基于key写入分区:通过hash值与分区的个数继续取余,但是会导致数据倾斜。
4、消费者消费数分区分配策略:默认使用的是range分配。
10、leader选举:
在kafka集群中,controller是通过zk进行选举。在分区中的leader是通过ISR进行选举的。
11、kafka的读写流程:
kafka的读数据:
1、通过zk找出partition对应的leader,leader负责读取数据。
2、通过zk找出对应的消费者的offset
3、leader从对应的offset开始读取数据
4、提交offset
kafka的写数据
1、通过zk找到对应的partition对应的leader,leader负责写入数据
2、生产者向leader中写入数据
3、ISR中的fllower负责同步数据,并返回ack给leader。
4、返回ack给生产者。
12、kafka性能高的原因:
1、kafka采用的是一个sendfile的零拷贝技术
2、kafka是批量写入和读取的,一批批的写入数据,默认写入和读取的大小月约64kb左右。
3、kafka写磁盘是顺序读取和写入的。
13、kafka中的文件删除策略:
默认是7天作为一个周期,删除的是整个文件,系统默认是1G生成一个文件,可以在配置文件中修改:
server.properties
14、kafka中分区的目的:
实现分布式,一个topic的数据量非常大,只存在同一个分区中压力会比较大。
15、在Kafka中是如何保证数据不丢失:
1、broker保证数据不丢失的原因是副本机制
2、生产者保证数据不丢失的原因是acks机制
3、消费者保证数据不丢失的原因是控制offset
16、zk在Kafka中作用:
1、负责选举controller
2、存储元数据信息
17、kafka的架构:
主节点:controller
从节点:borker
18、消费者和消费者组的关系:
1、消费者是负责订阅分区中的数据,然而对于消费者组来说是负责订阅topic的
2、一个消费者组中包含多个消费者,同一个消费者组中消费者可以订阅同一个topic
19、在Kafka中是如何保证数据的安全性
是通过kafka中的副本机制保证了数据的安全性。
20、怎么解决kafka数据量过大
1、可以增加topic的分区数,可以提高并行处理更多的数据
kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic --partitions 10
2、增加副本因子,可以提高数据的冗余,提高数据的可靠性
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic --replication-factor 3
3、调整消费者的并行度
4、优化生产者配置:
batch.size:增加批处理提高吞吐量
5、配置清理策列:根据数据保留策略配置日志保留时间和日志大小,定期清理旧数据
6、扩大kafka集群的规模:增加broker节点的数量
21、在Kafka中生产者是如何保证数据不丢失的
通过acks机制保证数据不丢失。
22、kafka中是如何保证数据不重复的
在kafka中使用幂等性来保证数据不重复的,在发送数据的时候,会给数据定义一个编号ID,当下次传输数据的时候ID+1,将数据写入的时候会记住这个编号,如果下一条数据的ID与上一个数据的ID一致,那么说明数据重复,不写入,返回ack。
23、消费者出问题,如何保证数据不丢失
kafka中使用commit offset 机制,会将消费的位置存储到comsumer-offset文件中。
24、什么是AR、ISR、OSR
AR:所有的副本
ISR:健康的副本
OSR:有问题的副本
相关文章:

大数据面试专题 -- kafka
1、什么是消息队列? 是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景? 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka? kafka是一种基于订阅发布模式的…...

深度学习入门简单实现一个神经网络
实现一个三层神经网络 引言测试数据 代码 引言 今天我们实现一个简单的神经网络 俩个输入神经元 隐藏层两个神经元 一个输出神经元 激活函数我们使用sigmoid 优化方法使用梯度下降 我们前期准备是需要把这些神经元的关系理清楚 x1:第一个输入 x2:第二个…...

win11 环境配置 之 Jmeter(JDK17版本)
一、安装 JDK 1. 安装 jdk 截至当前最新时间: 2024.3.27 jdk最新的版本 是 官网下载地址: https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下,新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…...

Windows下载使用nc(netcat)命令
‘nc’ 不是内部或外部命令,也不是可运行的程序? 点击链接地址,下载压缩包。 完成后解压 使用方式(三种): 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下,使用nc&a…...

istio 设置 istio-proxy sidecar 的 resource 的 limit 和 request
方式一 修改 configmap 查看当前 sidecar 的 cpu 和 memory 的配额 在 istio-sidecar-injector 中查找,修改后重启 pod 可以生效(下面那个 proxy_init 配置不管,不知道是干嘛的) 方式二 如果是通过 iop 安装的 istio…...
flutter弹框
alertDialog:弹框 simpleDialog:选择弹框 showModalBottomSheet:底部弹出弹框 showtoast:三方插件弹框 Navigator.of(context).pop(点击取消) 关闭弹框,传递参数 import package:flutter/material.dart; // import package:flutter/cupertino.dart; import package:flut…...

2013年认证杯SPSSPRO杯数学建模B题(第一阶段)流行音乐发展简史全过程文档及程序
2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现: 随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好…...

代码随想录算法训练营第39天 | 62.不同路径, 63不同路径II
Leetcode - 62:不同路径 题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &#…...

Redis 的慢日志
Redis 的慢日志 Redis 的慢日志(Slow Log)是用于记录执行时间超过预设阈值的命令请求的系统。慢日志可以帮助运维人员和开发人员识别潜在的性能瓶颈,定位那些可能导致 Redis 性能下降或响应延迟的慢查询。以下是 Redis 慢日志的相关细节&…...

第十四届蓝桥杯第十题:蜗牛分享
问题描述 输入格式 输出格式 输出共一行,一个浮点数表示答案(四舍五入保留两位小数)。 样例输入 3 1 10 11 1 1 2 1样例输出 4.20样例说明 蜗牛路线:(0,0)→(1,0)→(1,1)→(10,1)→(10,0)→(11,0)(0,0)→(1,0)→(1,1)→(10,1…...

不懂技术的老板,如何避免过度依赖核心技术人员
在这个日新月异、技术驱动的时代,即使作为非技术背景的老板,也深知核心技术人员的价值。然而,过度依赖某几位核心技术人员,不仅可能带来经营风险,还可能限制企业的创新与发展。那么,不懂技术的老板…...

Vue系列-el挂载
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>el:挂载点</title> </head> <body&g…...

python--os和os.path模块
>>> import os >>> #curdir #获取当前脚本的绝对路径 >>> os.curdir . >>> import os.path >>> #获取绝对路径 >>> os.path.abspath(os.curdir) C:\\Users\\GUOGUO>>> #chdir #修改当前目录 >&g…...
前端通用命名规范和Vue项目命名规范
通用命名规范 变量和常量命名:变量和常量的命名应具有描述性,清晰明了,使用驼峰命名法或下划线命名法,例如:firstName、MAX_VALUE。 函数和方法命名:函数和方法的命名应该能够准确描述其功能&…...
NTP服务搭建
一、ntpd和ntpdate区别 1.ntpd是自动执行的远程更新本地系统时钟的服务,是平滑同步; 2.ntpdate是手工执行的服务,也就是一般用它执行一次本地时间更新,如果做成半自动,可以写入到crontab自动任务,从而变成…...

Linux离线安装mysql,node,forever
PS:本文是基于centos7实现的,要求系统能够查看ifconfig和unzip解压命令, 实现无网络可安装运行 首先现在百度网盘的离线文件包****安装Xftp 和 Xshell 把机房压缩包传到 home目录下****解压unzip 包名.zip 获取IP先获取到 linux 主机的ip ifconfig Xftp 连接输入IP,然后按照…...

WPF中获取TreeView以及ListView获取其本身滚动条进行滚动
实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条) TreeView:TreeViewAutomationPeer lvap new TreeViewAutomationPeer(treeView); var svap lvap.GetPattern(PatternInterface.Scroll) as ScrollViewerAutomationPeer; var scroll svap.Owner as ScrollVie…...

C语言: 指针讲解
为什么需要指针? (1)指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果,但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能…...
C#使用Stopwatch类来实现计时功能
前言 在 C# 中,Stopwatch 类是用于测量经过的时间的工具类,提供了高精度的计时功能。Stopwatch 类位于 System.Diagnostics 命名空间中。通常情况下,使用 Stopwatch 的流程是创建一个 Stopwatch 对象,然后调用 Start 方法开始计时…...
ubuntu18.04安装qt
ubuntu18.04安装qt 1、下载文件 比如我下载的是5.13.0版本 下载链接 2、安装 wget https://download.qt.io/archive/qt/5.13/5.13.0/qt-opensource-linux-x64-5.13.0.runsudo chmod x qt-opensource-linux-x64-5.13.0.runsudo ./qt-opensource-linux-x64-5.13.0.run参考文…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...