欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > kafka面试题

kafka面试题

2025/4/27 17:50:27 来源:https://blog.csdn.net/yyzzyyds/article/details/143620569  浏览:    关键词:kafka面试题

目录

1、kafka消息发送的流程?

2、Kafka 的设计架构你知道吗?

3、Kafka 分区的目的?

4、Kafka 是如何做到消息的有序性?

5、ISR、OSR、AR 是什么?

6、Kafka 在什么情况下会出现消息丢失

7、怎么尽可能保证 Kafka 的可靠性

8、Kafka中如何做到数据唯一,即数据去重?

1.数据传递语义

2.幂等性

3.生产者事务

9、生产者如何提高吞吐量?

10、zk在kafka集群中有何作用

11、简述kafka集群中的Leader选举机制

12、kafka是如何处理数据乱序问题的。

13、kafka中节点如何服役和退役

1.服役

2.退役

14、Kafka中Leader挂了,Follower挂了,然后再启动,数据如何同步?

1.Leader挂了

2.Follower挂了

15、kafka中初始化的时候Leader选举有一定的规律,如何打破这个规律呢?


幂等性: 任何数字的0次方是 1

对一个结果修改N次,那么效果跟修改一次的效果是一样的。

- Kafka服务:
- Topic:主题,Kafka处理的消息的不同分类。
- Broker:消息服务器代理,Kafka集群中的一个kafka服务节点称为一个broker,主要存储消息数据。存在硬盘中。每个topic都是有分区的。
- Partition:Topic物理上的分组,一个topic在broker中被分为1个或者多个partition,分区在创建topic的时候指定。
- Message:消息,是通信的基本单位,每个消息都属于一个partition
- Kafka服务相关
- Producer:消息和数据的生产者,向Kafka的一个topic发布消息。
- Consumer:消息和数据的消费者,定于topic并处理其发布的消息。
- Zookeeper:协调kafka的正常运行。 

1、kafka消息发送的流程?

消息发送会涉及到两个线程,main线程和Sender线程,在main线程里创建了一个双端队列RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka Broker。

batch.size:只有数据积累到batch.size之后,sender才会发送数据。默认16K
                    缓冲区一批数据最大值,默认 16k。适当增加该值,可以提高吞吐量,但是如果
                    该值设置太大,会导致数据 传输延迟增加。
Linger.ms:如果数据迟迟未达到batch.size,sender等待Linger.ms设置的时间到了之后就发
                    送数据,单位ms,默认值0ms,表示没有延迟。

acks:0:生产者发送过来的数据,不需要等数据落盘应答。

           1:生产者发送过来的数据,Leader 收到数据后应答。

           -1(all):生产者发送过来的数据,Leader+和 isr 队列 里面的所有节点收齐数据后应
           答。默认值是-1,-1 和 all 是等价的。

2、Kafka 的设计架构你知道吗?

1.为了方便扩展,并提高吞吐量,一个topic分为多个partition
2.配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
3.为提高可用性,为每个partition增加若干副本,类似NameNode HA
4.ZK中记录谁是leader,Kafka2.8.0以后也可以配置不采用ZK

ISR:In-Sync Replicas isr 是一个副本的列表,里面存储的都是能跟leader 数据一致的副本

1.Producer:消息生产者,向Kafka broker发消息的客户端。

2.Consumer:消息消费者,向Kafka broker取消息的客户端。


3.Consumer Group(CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

4.Broker:一台Kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

5.Topic:可以理解为一个队列,生产者和消费者面向的都是一个topic

6.Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分成多个partition,每个partition是一个有序的队列。

7.Replica:副本,一个topic的每个分区都有若干个副本,一个Leader和若干个Follower

8.Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是Leader。

9.Follower:每个分区多个副本中的“从”,实时从Leader中同步数据,保持和Leader数据的同步。Leader发生故障时,某个Follower会成为新的Leader。

3、Kafka 分区的目的?

分区好处:

(1)便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。

(2)提高并行度,生产者可以以分区为单位发送数据;消费者可以以分区为单位进行消费数据。

4、Kafka 是如何做到消息的有序性?

生产者发送的数据,单分区内可以做到有序。多分区,无法保证,除非把多个分区的数据拉到消费者端,进行排序,但这样的话需要等待,效率很低,还不如直接设置一个分区。

5、ISR、OSR、AR 是什么?

AR = ISR + OSR

Kafka 分区中的所有副本(包含Leader)统

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词