关闭

kafka如何保证不丢失数据

瞎溜达 1年前 ⋅ 170 阅读

消费端弄丢了数据

唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边自动提交了 offset,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯。

Kafka 弄丢了数据
Kafka 的 leader 机器宕机了,将 follower 切换为 leader 之后,就会发现说这个数据就丢了。所以此时一般是要求起码设置如下 4 个参数:
⚫ 给 topic 设置 replication.factor 参数:这个值必须大于 1,要求每个 partition 必须有至少 2 个副本。
⚫ 在 Kafka 服务端设置 min.insync.replicas 参数:这个值必须大于 1,这个是要求一个leader 至少感知到有至少一个 follower 还跟自己保持联系,没掉队,这样才能确保leader 挂了还有一个 follower 吧。
⚫ 在 producer 端设置 acks=all:这个是要求每条数据,必须是写入所有 replica 之后,才能认为是写成功了。
⚫ 在 producer 端设置 retries=MAX(很大很大很大的一个值,无限次重试的意思):这个是要求一旦写入失败,就无限重试,卡在这里


全部评论: 0

    我有话说: