U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

20道常见的kafka面试题以及答案

来源:http://www.tudoupe.com时间:2022-07-29

JAVA面试宝库, 摆脱JAVA面试, 不再是一个问题, 一系列文章发送地址, 请点击这个链接.

目录

1、kafka的消费者是pull(拉)还是push(推)模式,这种模式有什么好处?

2,如何跟踪卡夫卡维护消息状态

3.卡夫卡的动物园主的角色是什么?

卡夫卡认为一个节点是活的有两个条件吗?

5、讲一讲 kafka 的 ack 的三种机制

在分发卡夫卡(而不是单机)的情况下,我如何保证订单的邮件的消耗?

我们怎么不消耗重复的数据呢?例如,我们不能重复一个推理。

告诉我卡夫卡团的组成情况。

卡夫卡是什么

10、partition的数据文件(offffset,MessageSize,data)

如何实现有效的数据阅读(序列读写、步骤命令、双步搜索)

12、 Kafka 消费者端的 Rebalance 操作什么时候发生?

卡夫卡中的ISR(InSyncRepli),OSR(OutSyncRepli),AR(AllRepli)代表什么?

卡夫卡中的HW和 LEO代表什么?

卡夫卡的设计是什么使得它如此高性能?

为什么卡夫卡不支持读写分离?

地区领导人的选举策略是什么?

18、请简述下你在哪些场景下会选择 Kafka?

让我们谈谈卡夫卡的数据一致性原则

20.卡夫卡的缺点?

卡夫卡的消费者是**pull(拉)或 push(推)**模式。该模式的优点是什么?

Kafka 遵循了一种大部分消息系统共同的传统的设计:producer 将消息推送到 broker,consumer 从broker 拉取消息。

优点:pull模式消费者自主决定是否批量从broker拉取数据,而push模式在无法知道消费者消费能力情况下,不易控制推送速度,太快可能造成消费者奔溃,太慢又可能造成浪费。

缺点:如果经纪人没有可供消费的资料,将导致消费者在循环中不断询问,直到新消息到到达。为了避免这点,Kafka 有个参数可以让 consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发送)。

2**,卡夫卡跟踪消息状态的方法**

卡夫卡的主题分为几个分支,每个分区只由一个消费者同时消费。然后再按偏差标记消息位置,通过移动位置跟踪消费状况.相比其他一些消息队列使用“一个消息被分发到consumer 后 broker 就马上进行标记或者等待 customer 的通知后进行标记”的优点是,避免发送通讯信息后,可能出现程序崩溃,导致信息丢失或重复使用。也不需要保持消息的状况,不用加锁,提高了吞吐量。

3**、zookeeper对于kafka的作用是什么**

动物园管理员主要用于在集群中的不同节点之间进行通信。在卡夫卡,它用于提交转移金额,所以如果节点在任何情况下失败,它可以从预先提交的极化中获得,除此之外,它还执行其他活动,例如,领导者检测、分布式同步、配置管理、新节点离开或连接时的识别、聚类、节点实时状态等。

卡夫卡认为一个节点是活的两个条件是什么

(一)节点必须保持 ZooKeeper 的连接, ZooKeeper 通过心脏跳动机制检查每个节点的连接
如果一个节点是追随者,它必须能够及时地同步领导的写字操作,而延迟可能不会太长

5**、讲一讲**kafka的ack的三种机制

request.required.acks 有三个值 0 1 -1(all),具体如下:
0**:生产者不会等待 broker 的 ack,这个延迟最低但是存储的保证最弱当 server 挂掉的时候就会丢数据。
1:**服务端会等待 ack 值 leader 副本确认接收到消息后发送 ack 但是如果 leader挂掉后他不确保是否复制完成新 leader 也会导致数据丢失。
**-1(all)****:**服务端会等所有的 follower 的副本受到数据后才会受到 leader 发出的ack,这样数据不会丢失。

6**、**kafka分布式(不是单机)的情况下,如何保证消息的顺序消费

Kafka 中发送 1 条消息的时候,可以指定(topic, partition, key) 3 个参数,partiton 和 key 是可选的。

Kafka 分布式的单位是 partition,同一个 partition 用一个 write ahead log 组织,因此, FIFO的订单可以得到保证。不同的分区之间不能保证序列.所以你可以指定一个分区,将相应的消息发送到同一个分区,并且在消费端,Kafka 保证1 个 partition 只能被1 个 consumer 消费,这些信息的消费顺序可以实现.

另外,你也可以指定 key(比如 order id),具有同 1 个 key 的所有消息,会发往同 1 个partition,那这样也实现了消息的顺序消息。

为什么Kafka不能消耗重复的数据?例如,我们不能重复一个推导。

问题是一个不同的问题,即如何保证消息的功率等价性。 对于消息队列,消息重复的概率相当高,并且不应该完全依赖于消息队列,而是应该在操作层面检查数据一致性功率等。

例如,您必须写一个处理数据的数据库。redis等),你必须先检查主键。如果这数据都有了,你就别插入了,做一些其他操作,例如消息注册或更新.另外,数据库级别也可以设置唯一可靠的,确保数据不重复插入, 等等.一般要求制造商发送此消息时,持有全国唯一的身份证。

8**、讲一下kafka集群的组成?**

卡夫卡的集群图如下:

经纪人(代理人)**

卡夫卡集群通常由多个代理组成,以维持负荷平衡。卡夫卡的代理人无国籍,因此他们使用ZooKeeper来维持他们的群体地位。卡夫卡代理实例能处理每秒数以万计的读写,每个经纪人可以处理TB消息,而没有性能影响。卡夫卡经纪人领导的选举可以由 ZooKeeper完成。

ZooKeeper

ZooKeeper用于管理和协调卡夫卡代理。 ZooKeeper服务主要用于通知生产者和消费者Kafka系统中存在任何新代理或Kafka系统中代理失败。根据动物园主收到的有关代理人的存在或失败的通知,然后生产者和消费者作出决定并开始与其他代理人协调他们的任务。

生产商(生产商)**

生产者将数据推送给经纪人。 当新代理启动时,所有生产者搜索它并自动向该新代理发送消息。 Kafka生产者不等待来自代理的确认,并且发送消息的速度与代理可以处理的一样快。

消费者(消费者)**

因为卡夫卡代理人是无国籍的,这意味着消费者必须使用部分转换来维持他们所消耗的信息量。如消费者确认某一特定信息偏差,则意味着消费者已经消费了所有先前的消息。消费者向代理人发出异步提取请求,有一个备用缓冲区。消费者可以通过提供转换值快速返回或跳到分区的任何位置。消费者偏差值由ZooKeeper通知.

卡夫卡是什么

Kafka是一个高吞吐、分布式、基于发布/订阅的新闻系统,最初由LinkedIn开发并以Scala语言编写,目前是Apache的一个开放源代码项目。

经纪人:卡夫卡服务器,负责存储和发送消息

topic:消息类别,Kafka按照topic来分类消息

partition: topic的分区,一个topic可以包含多个partition, topic 消息保存在各个partition上4. offset:消息在日志中的位置,可以理解,这个消息偏向于分区,也是唯一代表消息的序列

新闻制作人

消费者:新闻消费者

Consumer Group:消费者分组,每个Consumer必须属于一个group

Zookeeper:保存着集群 broker、 topic、 partition等meta 数据;另外,还负责broker故障发现, partition leader选举,负载均衡等功能

10**、partition的数据文件(offffset,MessageSize,data)**

partition中的每条Message包含了以下三个属性: offset,MessageSize,data,其中offset表示Message在这个partition中的偏移量,offset不是该Message在partition数据文件中的实际存储位置,而是逻辑上一个值,它唯一确定了partition中的一条Message,可以认为offset是partition中Message的 id; MessageSize表示消息内容data的大小;data为Message的具体内容。

11**,Kafka如何实现高性能数据阅读(序列读写、段落命令、双部分搜索)**

卡夫卡在每个段落之后为每个数据文件创建了一个索引文件,文件名与数据文件的名称相同,只有文件扩展被命名为索引。 index文件中并没有为数据文件中的每条Message建立索引,相反,我们使用稀疏的存储方法,每个间隔创建一个目录,用于指定字节的数据。这防止索引文件占用太多的空间,这允许索引文件存储在内存中。

12**、**Kafka消费者端的Rebalance操作什么时候发生?

  • 同一个 consumer 消费者组 group.id 中,新增了消费者进来,会执行 Rebalance 操作

  • 消费者离开当期所属的 consumer group组。比如宕机

  • 当分区数的变化时(即主题的分区数的变化时)

  • 消费者主动取消订阅

重新平衡的程序如下:

步骤1:所有成员向协调员发出请求,请求入组。一旦所有成员都发出了请求,coordinator会从中选择一个consumer担任leader的角色,并向领导发送团体成员和订阅信息.

第二步:领导者开始分配消费计划,指明具体哪个consumer负责消费哪些topic的哪些partition。一旦完成分配,leader会将这个方案发给coordinator。coordinator接收到分配方案之后会把方案发给各个consumer,因此,所有小组成员都知道他们应该消费哪些分区。

所以对于Rebalance来说,Coordinator起着至关重要的作用

13卡夫卡语中的ISR(InSyncRepli)**、OSR(OutSyncRepli)和**AR(AllRepli)**是什么意思?

答:kafka中与leader副本保持一定同步程度的副本(包括leader)组成ISR。与leader滞后太多的副本组成OSR。分区中所有的副本通称为AR。

ISR : 速率和leader相差低于10秒的follower的集合
OSR:具有超过10秒的速度和领导差的追随者
AR: 整个地区的追随者

在卡夫卡语中,HW**和 LEO分别代表什么?

A:HW:高水位意味着消费者只能在这种补偿之前提取数据

LEO:标识当前日志文件中下一条待写入的消息的offset,大小等于当前日志文件最后一条消息的offset+1.

15**、Kafka的那些设计让它有如此高的性能**

1.kafka是一个分布式消息队列
2.对log文件进行了segment,并对segment创建了索引
3.(单节点)使用序列读写,最大速度600M/s
4.引用零副本,读写操作在OS系统中完成

为什么卡夫卡不支持读写分离?

这实际上是分布式场景中的一个普遍问题,因为我们知道,根据 CAP理论,我们只能保证C(一致性)和A(可用性)是相同的。如果支持读写分离,事实上,对一致性的要求可能有一定折扣,因为通常的场景下,两个副本都同步实现副本数据的同步.在同步过程中肯定会耗费时间,如果支持读写分离,这意味着数据可能不匹配,或数据滞后。

2、 Leader/Follower模型并没有规定Follower副本不可以对外提供读服务。许多框架允许这样做,卡夫卡最初试图避免矛盾的问题,相反, 采用 了 向 领导人 提供 服务 的 统一 方式 。

3、 不过,自Kafka 2.4之后,Kafka提供了有限度的读写分离,也就是说,Follower副本能够对外提供读服务。

17地区领导人的选举策略是什么?

分区的Leader副本选举对用户是完全透明的,它是由Controller独立完成的。你需要回答的是,在哪些场景下,需要执行分区Leader选举。每一种场景对应于一种选举策略。

1、 OfflinePartition Leader选举:每当有分区上线时,需要举行领导选举。所谓的分区上线,也许已经创建了一个新的分区,也可以重新启动以前的子行段。这是最常见的地区领导人选举场景。

2、 ReassignPartition Leader选举:当你手动运行Kafka-reassign-partitions命令,或者当调用管理员的 alterPartitionReassignments方法执行分区复制重新分配时,可能触发此类选举。假设原始AR是 [1,2,3],Leader是1,当执行副本重新分配时,复制集合AR设置为[4,5,6],显然,领导必须改变,此时会发生Reassign Partition Leader选举。

3, PreferredReplicaPartition Leader Election:当你手动运行Kafka-preferred-replica-election命令时,或自动触发了Preferred Leader选举时,该类策略被激活。所谓的Preferred Leader,这是AR的第一个版本。比如AR是[3,2,1],那么,最喜欢的领导者是3人。

4、 ControlledShutdownPartition Leader选举:当Broker正常关闭时,所有领导人的副本在经纪人身上都将被销毁,因此,对于受影响的分区,必须进行相应的领导选举。

这4类选举策略的大致思想是类似的,即从AR中挑选首个在ISR中的副本,作为新Leader。

18**、请简述下你在哪些场景下会选择**Kafka**?**

日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、HBase、Solr等。
消息系统: 分离和生产者和消费者, 缓存消息等.
用户活动跟踪:卡夫卡经常用于记录Web用户或应用程序用户的各种活动,用于网页浏览、搜索、点击和其他活动,这些活动由每个服务器在Kafka的主题上发布,然后用户通过订阅这些主题进行实时监测分析,或者装入一个 hadoop, 数据仓库进行非线性分析和采矿.
操作指标:卡夫卡经常用于记录操作监测数据,包括收集各种分布式应用程序的数据和生成各种操作的集中反馈,如警报和报告。
流式处理:比如 spark streaming和 Flink

19**、请谈一谈**Kafka数据一致性原理

一致性就是说不论是老的 Leader 还是新选举的 Leader,Consumer 都能读到一样的数据。

假设分区的副本为3,副本0是 Leader,图1和图2是后续的,它也是ISR的列表中。虽然副本0已经写给4号消息,但是 Consumer 只能读取到 Message2。因为所有的 ISR 都同步了 Message2,只有 High Water Mark 以上的消息才支持 Consumer 读取,而 High Water Mark 取决于 ISR 列表里面偏移量最小的分区,附上图2的副本,这与木桶原理非常相似。

这 是 因为 没有 大量 复制 的 新闻 被 认为 是 “ 不安全 ” 的,如果领导崩溃,另一个副本成了新的领导,那么消息可能会丢失。如果我们允许消费者阅读这些信息,这可能破坏一致性。试想,一个消费者从当前 Leader(副本0) 读取并处理了 Message4,此时,领导正在悬挂,新的领导人已由第1版选出,这时候另一个消费者再去从新的 Leader 读取消息,发现这些消息并不真的存在,这导致了数据不一致的问题。

当然,引入了 High Water Mark 机制,这可能会导致经纪人之间消息的复制因某种原因被放慢。然后,消息到达消费者所需的时间也会发生变化(因为我们将等待消息被复制)。延迟时间可以通过参数.lag.Time.Max.ms参数配置复制,它指定在复制消息时允许复制的最大延迟时间。

卡夫卡的缺点是什么?

数据不是实时的,因为它是大量发送的;
mqtt协议不支持;
不支持实物网络(IoT)传感器数据直接访问;
只支持统一分区消息顺序, 不能实现全球消息顺序;
监控不完善,需要安装插件;
依据动物园管理者管理元数据;

JAVA面试宝库, 摆脱JAVA面试, 不再是一个问题, 一系列文章发送地址, 请点击这个链接.[这是图片005]https://blog.csdn.Wanghaiping 1993/article/details/125075785

先自我介绍一下,他高中毕业了13年,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。了解大多数年轻的Java工程师,想要升技能,经常需要找到自己的成长或向班上汇报。但对于培训机构来说,学费大约是人民币,着实压力不小。当你不在系统时,自我学习的效率很低,而且很持久。也很容易停止天花板技术。所以我为你收集了一个"java开发工具"初衷也很简单,这是一个想帮助自己学习的朋友,却不知道该从哪里学习。同时减少每个人的负担.添加下方名片,你可以得到完整的学习信息

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息