2024年大数据最新【大数据】Kafka高频面试题(三)_kafka高平面试题(3),2024年最新深入浅出大数据开发

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

传统的消息传递方法包括两种:
队列:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人
发布-订阅:在这个模型中,消息被广播给所有的用户

22.请说明Kafka相对于传统的消息传递方法有什么优势?

高性能:单一的Kafka代理可以处理成千上万的客户端,每秒处理数兆字节的读写操作,Kafka性能远超过传统的ActiveMQ、RabbitMQ等,而且Kafka支持Batch操作
可扩展:Kafka集群可以透明的扩展,增加新的服务器进集群
容错性: Kafka每个Partition数据会复制到几台服务器,当某个Broker失效时,Zookeeper将通知生产者和消费者从而使用其他的Broker

23.在Kafka中broker的意义是什么?

在Kafka集群中,broker指Kafka服务器
术语解析

名称说明
Topic主题,可以理解为一个队列
Partition分区,为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序
Offset偏移量,kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafkaOffset
Broker一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic
Producer消息生产者,向kafka broker发消息的客户端
Consumer消息消费者,向kafka broker取消息的客户端
Consumer Group消费者组,这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic

24.如何保证 Kafka 中的消息是有序的?

单线程顺序消费

生产者在发送消息时,将消息对应的id进行取模处理,相同的id发送到相同的分区。消息在分区内有序,一个分区对应了一个消费者,保证了消息消费的顺序性。

多线程顺序消费

单线程顺序消费已经解决了顺序消费的问题,但是它的扩展能力很差。为了提升消费者的处理速度,但又要保证顺序性,我们只能横向扩展分区数,增加消费者。
我们可以模仿一下kafka的分区思想操作。将接收到的kafka数据进行hash取模(注意注意,你kafka分区接受消息已经是取模的了,这里一定要对id做一次hash再取模)发送到不同的队列,然后我们开启多个线程去消费对应队列里面的数据。

25.kafka数据丢失问题,及如何保证?

1)数据丢失:
acks=1的时候(只保证写入leader成功),如果刚好leader挂了。数据会丢失
acks=0的时候,使用异步模式的时候,该模式下kafka无法保证消息,有可能会丢
2)brocker如何保证不丢失:
acks=-1 : 所有副本都写入成功并确认
retries = 一个合理值
min.insync.replicas=2 消息至少要被写入到这么多副本才算成功
unclean.leader.election.enable=false 关闭unclean leader选举,即不允许非ISR中的副本被选举为leader,以避免数据丢失
3)Consumer如何保证不丢失:
如果在消息处理完成前就提交了offset,那么就有可能造成数据的丢失
enabel.auto.commit=false关闭自动提交offset
处理完数据之后手动提交

26.kafka的消费者方式?

consumer采用pull(拉)模式从broker中读取数据
push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息
对于Kafka而言,pull模式更合适,它可简化broker的设计,consumer可自主控制消费消息的速率,同时consumer可以自己控制消费方式——即可批量消费也可逐条消费,同时还能选择不同的提交方式从而实现不同的传输语义
pull模式不足之处是,如果kafka没有数据,消费者可能会陷入循环中,一直等待数据到达。为了避免这种情况,我们在我们的拉请求中有参数,允许消费者请求在等待数据到达的“长轮询”中进行阻塞

27.Kafka消费过的消息如何再消费

kafka 消费消息的 offset 是定义在 zookeeper 中的,如果想重复消费 afka 的消息可以在 redis 中自己记录 offset 的 checkpoint 点 (n 个) ,当想重复消费消息时通过读取 redis 中的 checkpoint 点进行 zookeeper 的 offset 重设,这样就可以达到重复消费消息的目的了

28.Kafka重启是否会导致数据丢失

1.kafka 是将数据写到磁盘的,一般数据不会丢失
2.但是在重启 kafka 过程中,如果有消费者消费消息,那么 kafka 如果来不2及提交 offset,可能会造成数据的不准确 (丢失或者重复消费)

29.Kafka 核心组件有哪些, 分别有什么作用呢?

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化资料的朋友,可以戳这里获取

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值