Kafka相关面试题

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

       producer从broker拉取消息,consumer从broker拉取消息

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

缺点:如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到到达。为了避免这点,Kafka 有个参数可以让 consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发送)。
2、kafka中ack的三种机制

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

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

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

另外,你也可以指定 key(比如 order id),具有同 1 个 key 的所有消息,会发往同 1 个partition,那这样也实现了消息的顺序消息。
4、kafka如何不重复消费数据

这个问题换种问法,就是kafka如何保证消息的幂等性。对于消息队列来说,出现重复消息的概率还是挺大的,不能完全依赖消息队列,而是应该在业务层进行数据的一致性幂等校验。

比如你处理的数据要写库(mysql,redis等),你先根据主键查一下,如果这数据都有了,你就别插入了,进行一些消息登记或者update等其他操作。另外,数据库层面也可以设置唯一健,确保数据不要重复插入等 。一般这里要求生产者在发送消息的时候,携带全局的唯一id。
 

Kafka相关面试题涵盖了众多方面,包括Kafka的设计、数据传输、节点判断、消息顺序性、消费组、分区等等。以下是一些常见的Kafka面试题: 1. Kafka的设计是什么样的? Kafka是一个分布式流处理平台,主要由生产者、消费者和Broker组成。生产者将数据发送到Broker,消费者从Broker订阅并消费数据。Kafka使用分区来实现可扩展性和容错性。 2. 数据传输的事物定义有哪三种? Kafka支持事务,有三种事务定义:生产者事务、消费者事务和流事务。生产者事务用于确保发送到Kafka的消息在提交事务之前不会被其他消费者读取。消费者事务用于确保在事务提交之前消费的消息不会被其他消费者提交。流事务用于保证在流处理应用程序中对多个Kafka主题的读写操作的原子性。 3. Kafka判断一个节点是否还活着有哪两个条件? Kafka判断一个节点是否还活着主要有两个条件:心跳和元数据。心跳是指Kafka节点定期向控制器发送心跳信号,以表明节点还存活。元数据是指Kafka节点定期发送元数据更新请求给控制器,以表明节点还能处理客户端请求。 4. producer是否直接将数据发送到broker的leader(主节点)? 是的,生产者将数据直接发送到broker的leader节点。leader节点负责接收和写入数据,然后将数据复制到其他follower节点以实现数据的冗余和容错性。 5. Kafka consumer是否可以消费数据或者是Push模式? Kafka的consumer可以以Pull模式或者Push模式消费数据。在Pull模式中,消费者主动从broker拉取数据。在Push模式中,broker将数据推送给消费者。 希望以上回答对您有所帮助。如需了解更多详情,请参考相关面试资料。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Kafka面试题.pdf](https://download.youkuaiyun.com/download/qq_44273429/20700822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [20道常见的kafka面试题以及答案](https://blog.youkuaiyun.com/wanghaiping1993/article/details/125346010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Kafka常见面试题(附个人解读答案+持续更新)](https://blog.youkuaiyun.com/C_Xiang_Falcon/article/details/100917145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值