kafka部分面试常见问题及其解答

4. kafka 分区的目的?

分区对于kafka集群的好处是:实现负载均衡。
分区对于消费者和生产者来说,可以提高并行度,提高效率。--------提高消费者的并行度—》消费者组

5. kafka 是如何做到消息的有序性?

kafka中的每个 partition 中的消息在写入时都是有序的(不断追加),而且单独一个 partition只能由一个消费者去消费,可以在里面保证消息的顺序性。但是分区之间的消息是不保证有序的。

6. kafka 的高可靠性是怎么实现的?

多副本存储
Producer发送数据时可配置ack=all 并且里面有hw 还有leader-epoch

7. 请谈一谈kafka数据一致性原理

一致性指的是不论在什么情况下,Consumer都能读到一致的数据。
HW 高水位线 在0.11版本之前,只用了高水位线来保证,但是这个里面其实是会出现一些问题的,比如数据丢失,即使是ack等于-1的情况下,也可能会丢数据
LEO等
在0.11版本之后,新加了一个角色叫leader的纪元号,根据高水位线和纪元号来处理,再配上ack=-1的时候,基本上就不会丢数据了。。。。

8. kafka 在什么情况下会出现消息丢失?

  • topic的副本如果只有1个,那么一旦这个副本所在broker服务器宕机,则有可能丢失;
  • producer往kafka写入数据时,如果确认机制参数acks !=all,也可能会造成数据丢失;
  • 不清洁选举机制如果开启,也可能造成数据丢失(不清洁选举就是说在所有ISR副本全部宕机的情况下,可以让OSR副本成为Leader,而OSR中的数据显然不全;那么,就算之前的Leader重新上线了,也会被进行日志截断)

9. 怎么尽可能保证 kafka 的可靠性

副本数>1
ack=all
min.insync.replicas >= 2

10. 数据传输的语义有几种?

数据传输的语义通常有以下三种级别:
设置消费者里面有enable.auto.commit = true/false

  • 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输
  • 最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输
  • 精确一次(Exactly once): 不会漏传输也不会重复传输

11. kafka 消费者是否可以消费指定分区的消息?

可以,通过assign的方式指定要消费的topic及分区
如果我是subscribe 可以在在均衡监听器的第二个重写方法中使用

12. kafka 消费者是否从指定偏移量开始消费?

可以,通过seek指定偏移量后再开始消费

13. 客户端操作kafka消息是采用poll模式,还是push模式?

kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还是push。在这方面,Kafka遵循了一种大部分消息系统共同的传统的设计:producer将消息推送到broker,consumer从broker拉取消息。
一些消息系统比如Scribe和Apache Flume采用了push模式,将消息推送到下游的consumer。这样做有好处也有坏处:由broker决定消息推送的速率,对于不同消费速率的consumer就不太好处理了。消息系统都致力于让consumer以最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率远大于consumer消费的速率时,consumer恐怕就要崩溃了。最终Kafka还是选取了传统的pull模式。
pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。如果为了避免consumer崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。Pull模式下,consumer就可以根据自己的消费能力去决定这些策略。
pull有个缺点是,如果broker没有可供消费的消息,将导致consumer不断在循环中轮询,直到新消息到达。为了避免这点,Kafka有个参数可以让consumer阻塞直到新消息到达(当然也可以阻塞直到消息的数量达到某个特定的量这样就可以批量拉取)

14. kafka的消息格式有了解吗?

  • V0版本
  • V1版本
    crc attributes mgic timestamp keylength key valuelength value

15. kafka 高效文件存储设计特点

Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。 默认存储时间7天
通过索引信息可以快速定位message和确定response的最大大小。
通过index元数据全部映射到memory,可以避免segment file的IO磁盘操作。
通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值