面试问题
-
kafka是怎么保证消费不重复的?
1.设置幂等性配置, enable.idempotence=true
2从消费端考虑消费不重复,需要手动提交offset,保证消费到了再提交。
3.从消费端考虑,设置业务逻辑,先查询是否存在记录,不存在再进行插入。 -
kafka是怎么保证,不丢失,
1.生产者端考虑消费不丢失,主要设置ack=-1或all 保证消息能够提交到broker。
2.生产者配置发送失败重试机制,retries配置重试次数
3.消费者端考虑,不要先提交offset,再消费,会导致提交,如果消费过程中出现异常
,消费消息就丢失了。 -
kafka消费数据积压,消费能力不足怎么办?
1.消费能力不足可以考虑增加分区,同时增加消费者的数量提高消费能力。
2.可以增加业务侧的消费能力,单线程改多线程,充分利用机器性能,优化处理逻辑,增加消费能力。 -
kafka快的原因是什么?
1.零拷贝技术
2.顺序写磁盘
3.分布式架构 -
消费者分区策略?
1.range 根据topic进行分区消费,比如有三个分区,两个消费者
topic01–>comsumer1,topic02–>comsumer2,topic3—>comsumer1
优点是,不会产生消费错误的情况,默认是该种策略。
2.RoundRobin
按消费者组分配,例如,有一个消费者组,两个消费者,一个订阅了topicA,一个订阅了topicb和topicb,
两个topic都有两个分区,则会
topicA01–comsumer01
topicA02–comsumer02
topicB01–>comsumer01
topicb02–>comsumer02
可以看到不管你是否订阅了topicb,只要消费者中有订阅该topic,就会轮询去消费,因此,这种模式需要消费者组订阅同样的topic,否则会消费到未订阅topic。优点是消费者消费topic平均。