kafka常见面试题的总结-4

本文详细讨论了Kafka中数据丢失的情况,包括broker、生产者和消费者的丢失场景,并提供了相应的解决方案。此外,还介绍了Kafka实现高吞吐量的秘诀,如顺序写入、pageCache和零拷贝技术。同时,概述了Kafka生产者发送数据的模式、消费者负载均衡机制以及偏移量的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息队列在什么情况下会丢失数据呢,如何保证数据不丢失?

  • broker服务端的丢失问题:由于只有一个副本,生产者在生产消息时候发送到broker还没来及进行持久化刷盘时,这时数据是保存在pageCache里面,broker突然宕机了,造成数据丢失

    • 解决方案:进行broker高可用,给每个partition进行配置replication副本个数,生产者写入的时候首先根据分发策略写入leader中,并且follower 副本进行了备份同步,才认为是生产者发送成功

  • 生产者丢失问题:由于配置ack为0或者1的时候可能存在数据丢失,当为0的时候,数据没有同步到副本的时候,broker挂了没有将数据刷盘,这时会丢失。或者可能因为网络抖动发送数据失败了,没有进行尝试造成数据丢失

    • 解决方案1:producer可以设置acks的参数 acks = all(-1),生产者发送消息之后,需要等待isr中所有副本都成功写入消息之后才能够影响成功。

    • 解决方案二: Producer 的retries(重试次数)设置一个比较合理的值,一般是 3 ,但是为了保证消息不丢失的话一般会设置比较大一点。设置完成之后,当出现网络问题之后能够自动重试消息发送,避免消息丢失。另外,建议还要设置重试间隔,因为间隔太小的话重试的效果就不明显了,网络波动一次你3次一下子就重试完了

  • 消费者的丢失问题:就是当消费者在根据offset拉取消息之后,消费者默认就会自动提交commitÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值