大数据面试专题 -- 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:有问题的副本

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

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

相关文章

Linux 著名的sudo、su是什么?怎么用?

一、su 什么是su? su命令(简称是:substitute 或者 switch user )用于切换到另一个用户,没有指定用户名,则默认情况下将以root用户登录。 为了向后兼容,su默认不改变当前目录,只设…

专升本-云计算

被誉为第三次信息技术革命 什么是云计算? 云计算是一种商业的计算模式,它将任务分布在大量计算机构成的资源池上,用户可以按需通过网络存储空间,计算能力和信息等服务 云计算的产生和发展: 起源:上世纪6…

【力扣刷题日记】1173.即时食物配送I

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1173.即时食物配送I 表:Delivery 列名类型delivery_idintcustomer_idintorder_datedatecustomer…

Qt使用opencv打开摄像头

1.效果图 2.代码 #include "widget.h"#include <QApplication>#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>#include <QImage> #include <QLabel> #incl…

实现 Element UI el-table 树形数据的懒加载

当面对大量数据时&#xff0c;一次性加载所有数据可能会导致性能问题。为了解决这一问题&#xff0c;我们可以实现树形数据的懒加载。本文将介绍如何在使用 Element UI 的 Vue 应用中为 el-table 组件的树形数据添加懒加载功能。 懒加载的基本概念 懒加载是一种优化网页或应用…

http和https的工作原理是什么?

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是两种用于在互联网上传输数据的主要协议&#xff0c;它们均用于在客户端&#xff08;通常是Web浏览器&#xff09;与服务器之间交换信息。尽管它们…

【自动装箱以及包装类的缓存】⭐️通过具体案例看下每种包装类的不同结果

目录 前言 一、自动装箱与拆箱&#xff08;以 Integer 包装类为例&#xff09; 二、再来看看几个示例 ​编辑三、Double ,Float 类型亦是如此吗&#xff1f; 前言 小伙伴们大家好&#xff0c;日常使用业务层方面的代码居多&#xff0c;但也不可忘了基本的一些代码格式以及原…

QA:ubuntu22.04.4桌面版虚拟机鼠标丢失的解决方法

前言 在Windows11中的VMWare Workstation17.5.1 Pro上安装了Ubuntu22.04.4&#xff0c;在使用过程中发现&#xff0c;VM虚拟机的鼠标的光标会突然消失&#xff0c;但鼠标其他正常&#xff0c;就是光标不见了&#xff0c;下面是解决办法。 内容 如下图&#xff0c;输入mouse&a…

力扣面试150 H 指数 计数数组 模拟题

Problem: 274. H 指数 思路 &#x1f468;‍&#x1f3eb; 灵神题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public int hIndex(int[] citations) {int n citations.length;int[] cnt new int[n 1];//cnt[i] …

Spark-Scala语言实战(8)

在之前的文章中&#xff0c;我们学习了如何在spark中使用RDD方法的map,sortby,collect。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&…

在Java中对SQL进行常规操作的通用方法

SQL通用方法 一、常规方法增删改查二、具体优化步骤1.准备工作2.getcon()方法&#xff0c;获取数据库连接对象3.closeAll()方法&#xff0c;关闭所有资源4.通用的增删改方法5.通用的查询方法6.动态查询语句 总结 一、常规方法增删改查 在常规方法中&#xff0c;我们在Java中对…

基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计——综述

综述 本文对基于视觉的机器人抓取进行了全面的综述。我们总结了基于视觉的机器人抓取过程中的三个关键任务&#xff0c;即物体定位、物体姿态估计和抓取估计。详细地说&#xff0c;对象定位任务包括无分类的对象定位、对象检测和对象实例分割。此任务提供输入数据中目标对象的…

基于微信小程序医院挂号系统的设计与实现(论文+源码)_kaic

摘 要 进入21世纪网络和微信小程序得到了飞速发展&#xff0c;并和生活进行了紧密的结合。目前&#xff0c;网络的运行速度以达到了千兆&#xff0c;覆盖范围更是深入到生活中的脚脚落落。这就促使微信小程序的发展。微信小程序可以实现远程处理事务&#xff0c;远程提交工…

Predict the Next “X” ,第四范式发布先知AIOS 5.0

今天&#xff0c;第四范式发布了先知AIOS 5.0&#xff0c;一款全新的行业大模型平台。 大语言模型的原理是根据历史单词去不断预测下一个单词&#xff0c;换一句常见的话&#xff1a;Predict the Next “Word”。 当前对于行业大模型的普遍认知就是沿用这种逻辑&#xff0c;用大…

HTTP/1.1 特性(计算机网络)

HTTP/1.1 的优点有哪些&#xff1f; 「简单、灵活和易于扩展、应用广泛和跨平台」 1. 简单 HTTP 基本的报文格式就是 header body&#xff0c;头部信息也是 key-value 简单文本的形式&#xff0c;易于理解。 2. 灵活和易于扩展 HTTP 协议里的各类请求方法、URI/URL、状态码…

聊聊多版本并发控制(MVCC)

多版本并发控制&#xff08;MVCC&#xff09; MVCC一直是数据库部分的高频面试题&#xff0c;这篇文章来聊聊MVCC是什么&#xff0c;以及一些底层原理的实现。 当前读和快照读&#xff1a; 当前读&#xff1a;读取的是事务最新的版本&#xff0c;读取的过程中其他并发事务不…

Docker 笔记

1.Ubuntu安装Docker 安装Docker看这篇文章 http://t.csdnimg.cn/IsSsJ 2.在docker中运行python代码 2.1搭建python环境 docker部署python环境看这篇文章 http://t.csdnimg.cn/TYz0G 2.2在python shell中运行python代码 2.2.1查看镜像 2.2.1启动python&#xff0c;厦门这个…

在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。

demo案例 在 Three.js 中&#xff0c;OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。下面是关于它的入参、出参、属性和方法的解释&#xff1a; 类名&#xff1a;OBJExporter 构造函数&#xff1a; THREE.OBJExporter()说明&#xff1a; 创建一个 OBJE…

4月1日起,未备案App小程序将下架

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 最后2天了、最后2天了。 从2024年4月1日起&#xff0c;工信部要求所有的APP、小程序都要备案&#xff0c;否则下架、关停、限制更新。这是去年8月份出的新规&#xff0c;没想到十个月这么快就过去了。 现在广东省…

面向对象:多态

文章目录 一、什么是多态二、构成多态的条件2.1什么是虚函数2.1如何构成虚函数的重写&#xff08;原理层面上叫&#xff1a;重写&#xff09;2.2父类指针的调用 三、多态调用父类指针出现的情况四、构成多态的一种特殊情况&#xff08;协变&#xff09;五、析构函数构成的多态六…