面试官竟然问我消息队列为啥会丢失消息?幸亏我总结了全套八股文( 二 )


 

面试官竟然问我消息队列为啥会丢失消息?幸亏我总结了全套八股文

文章插图
 
 
为了提升持久化消息性能,我们可以进行一些设置:
# 如果follower超过一秒没有向leader拉取消息,就把它移出ISR列表rerplica.lag.time.max.ms = 1000# 如果follower落后leader一千条消息,就把它移出ISR列表rerplica.lag.max.messages = 1000# 至少保证ISR中有3个followermin.insync.replicas = 3# 异步消息,不需要leader确认,立即给生产者返回发送成功,丢失消息概率较大asks = 0# leader把消息写入本地日志中,不会等所有follower确认,就给生产者返回发送成功,小概率丢失消息asks = 1# leader需要所有ISR中follower确认,才给生产者返回发送成功,不会丢失消息asks = -1 或者 asks = all三、消费过程丢失消息kafka中有个offset的概念,consumer从partition中拉取消息,consumer本地处理完成后需要commit一下offset,表示消费完成,下次就不会再拉取到这条消息 。
所以我们需要关闭自动commit offset的配置,防止consumer拉到消息后,服务宕机,导致消息丢失 。
enable.auto.commit = false面试官: 还得是你,就你总结的全,我都想不那么全,明天来上班吧,薪资double 。
 
本文知识点总结: 
面试官竟然问我消息队列为啥会丢失消息?幸亏我总结了全套八股文

文章插图
 




推荐阅读