写点什么

2023-07-10:Kafka 如何做到消息不丢失?

  • 2023-07-10
    北京
  • 本文字数:661 字

    阅读完需:约 2 分钟

2023-07-10:Kafka 如何做到消息不丢失?


答案 2023-07-10:


Kafka 采用多种机制来确保消息的不丢失,其中包括副本机制、ISR(In-Sync Replicas)机制以及 ACK 机制等。


1.副本机制


Kafka 通过副本机制来确保消息不会丢失。在 Kafka 中,每个分区都可以配置多个副本,每个副本保存分区的完整拷贝。当一个副本宕机时,Kafka 会自动将其切换到其他可用副本上。因此,即使某个副本宕机,仍然能够保证消息不会丢失。


2.ISR 机制


在 Kafka 中,副本分为 Leader 副本和 Follower 副本。Leader 副本负责处理消息,而 Follower 副本则简单地复制 Leader 副本的数据。当 Follower 副本与 Leader 副本之间出现落后时,Kafka 会将 Follower 副本从 ISR(In-Sync Replicas)中移除。只有当 Follower 副本与 Leader 副本之间的差距不大时,才会将 Follower 副本重新加入 ISR,以确保消息不丢失。


3.ACK 机制


在 Kafka 中,生产者发送消息时可以通过设置acks参数来决定确认的级别。acks参数有三个选项:


  • acks=0表示生产者不等待消息的确认,直接发送消息到 Kafka 集群。这种方式可能会导致消息丢失,不建议使用。

  • acks=1表示生产者在消息被 Leader 副本确认接收后,视为消息发送成功。如果 Leader 副本在发送消息后立即发生故障,消息可能会丢失。如果 Follower 副本成功复制了消息,但 Leader 副本在故障前未能将消息写入磁盘,那么这条消息将会丢失。

  • acks=all表示生产者在所有 ISR 副本都确认接收到消息后,才将消息视为发送成功。这种方式可以最大程度地确保消息不会丢失,但会降低消息发送的性能。


通过合理配置acks参数,我们可以在消息可靠性和性能之间进行权衡,以确保 Kafka 中的消息不会丢失。



发布于: 刚刚阅读数: 2
用户头像

公众号:福大大架构师每日一题 2021-02-15 加入

公众号:福大大架构师每日一题

评论

发布
暂无评论
2023-07-10:Kafka如何做到消息不丢失?_福大大架构师每日一题_福大大架构师每日一题_InfoQ写作社区