大数据面试专题 -- kafka

news/2024/7/27 11:46:11/文章来源:https://blog.csdn.net/m0_62078954/article/details/137164539
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:有问题的副本

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

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

相关文章

新闻管理系统(源码+文档)

新闻管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端新闻详情新闻首页分类退出登录个人中心拨打客服热线注册界面个人资料新闻评论成功 管理端用户管理分类管理新闻管理 文件包含内容 1、搭建视频 2、流程图 3、开…

Kubernetes(K8S)学习(三):K8S实战案例

K8S实战案例 一、部署wordpressmysql(NodePort方式)(1)创建命名空间:wordpress(2)创建wordpress-db.yaml文件(mysql)(3)创建pod:mysql…

Git常用语句

设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…

“Linux 三剑客”,通常指的是三个经典的命令行工具:grep、sed 和 awk

1、grep: 简介:grep 是一个强大的文本搜索工具,可以用于在文件中查找匹配特定模式的行。示例: 搜索包含特定关键词的行: grep "keyword" filename 递归搜索目录下所有文件: grep -r define zj…

STM32F4系列单片机的定时器讲解和计数器,PWM信号输出,PWM信号捕获的实现对电机进行控制和监测功能

1.定时器功能介绍: 在控制领域里面,我们可以用信号输出定时器,进行PWM的控制,从而达到控制电机的目的,通过输入捕获功能可以用来接收外部的数字信号,用于测量脉冲宽度、频率或周期等。在这里给大家介绍下&…

Windows系统编译protobuf

在编译ncnn前,需要编译好protobuf。这篇文章将记录protobuf的编译方法。 什么是protobuf Protocol Buffers是一种轻量级、高效的数据交换格式,它可以用于结构化数据的序列化,适用于通信协议、数据存储等领域。 优点: 高效性&…

Vision Pro开发实践(一)

简介 Vision Pro是苹果公司的首款头戴式“空间计算”显示设备,于2023年6月6日在“WWDC2023”正式发布,同时推出的还有专为Vision Pro打造的操作系统平台visionOS,以及一整套“新的”开发工具,之所以打引号,是因为用于…

《书生·浦语大模型全链路开源开放体系》学习笔记

书生浦语大模型全链路开源开放体系-学习笔记 大模型成为发展通用人工智能的重要途径专用模型通用大模型 书生大模型开源历程InternLM2回归语言建模的本质主要亮点性能全方位提升强大的内生计算能力 从模型到应用典型流程全链条开源开放体系数据数据集获取预训练微调XTuner 评测…

MySQL-linux安装-万能RPM法

一、MySQL的Linux版安装 1、 CentOS7下检查MySQL依赖 1. 检查/tmp临时目录权限(必不可少) 由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执行 : chmod -R 777 /tmp2. …

WPF+Prism 模块化编程(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 WPFPrism 模块化编程(一) 一、Prism项目创建安装二、将项目升级为Prism项目三、将Prism项目升级为支持模块化编程项目 一、Prism项目创建安装 1、新建…

Redis的安装部署

目录 1、关闭防火墙 2、yum安装gcc依赖包 3、提前准备好安装包并解压在opt目录下 4、进入redis目录下进行make编译 5、选择用于安装的目录 6、执行软件包提供的 install_server.sh 脚本文件设置 Redis 服务所需要的相关配置文件 7、一直回车直到出现以下提示 8、 把redi…

归并排序和分治

归并排序 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到这种结构…

代码随想录阅读笔记-二叉树【二叉树的所有路径】

题目 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路 这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。 在这道…

基于单片机微波炉加热箱系统设计

**单片机设计介绍,基于单片机微波炉加热箱系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的微波炉加热箱系统设计是一个融合了硬件与软件技术的综合性项目。以下是对该设计概要的详细描述&#xf…

ssm020基于ssm的人才招聘网站+jsp

人才招聘系统 摘 要 随着科技的发展,人才招聘的方式也发生着改变。本基于ssm的人才招聘网站正是采用计算机技术和网络设计的新型系统,可以有效的把招聘信息与网络相结合,为用户提供工作帮助和管理需求。本系统采用mysql数据库存储数据&…

Lua环境下载与配置

这里介绍如何下载已经编译好的Lua环境,如何配置Lua环境。 如希望自己从源码编译Lua环境,请自行搜索资料。 第一步:下载编译好的lua环境 打开下面链接,然后根据指引下载。 The Programming Language Luahttps://www.lua.org/hom…

python文件处理:解析docx/word文件文字、图片、复选框

前言 因为一些项目原因,我需要提供解析docx内容功能。本来以为这是一件比较简单的工作,没想到在解析复选框选项上吃了亏,并且较长一段时间内通过各种渠道都没有真正解决这一问题,反而绕了远路。 终于,我在github pytho…

HarmonyOS 应用开发之Stage模型启动FA模型PageAbility

本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 UIAbility启动PageAbility UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 说明: 需注意FA模型中abilityName由bundleName AbilityName组成,具体见示例。 i…

HarmonyOS 应用开发之Worker

Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。 Worker运作机制 图1 Worker运作机制示意…

session反序列化漏洞2——ctfshow web263

题目链接 https://ctf.show/challenges#web263-723 解题思路 进去先是一个登录框 目录扫描一下发现存在源码泄露 查看源码 index.php error_reporting(0);session_start();//超过5次禁止登陆if(isset($_SESSION[limit])){$_SESSION[limti]>5?die("登陆失败次数超…