当前位置:   article > 正文

Kafka面试小结一:Kafka如何保证消息不丢失?

kafka如何保证消息不丢失

Kafka通过以下几种方式来保证消息不丢失:

  1. 异步发送改为同步发送:Kafka生产者默认使用异步发送消息,这意味着生产者会立即继续执行后续操作,而不等待消息发送的结果。但是,为了确保消息不丢失,可以将异步发送改为同步发送,以便生产者可以实时知道消息发送的结果。
  2. 添加异步回调函数:除了将异步发送改为同步发送,Kafka还支持添加异步回调函数来监听消息发送的结果。如果发送失败,可以在回调函数中重试。
  3. 提供回调参数retries:Kafka生产者本身提供了一个retries的机制。如果由于网络问题、broker故障等原因导致发送失败,生产者可以重试。
  4. Broker端持久化消息到磁盘:Kafka broker端通过将消息持久化到磁盘来确保发送来的数据不丢失。然而,Kafka采用的是异步批量存储到磁盘的机制,具有一定的消息量和时间间隔要求。如果在刷盘之前系统崩溃,可能会导致数据丢失。
  5. acks参数保证数据不丢失:Kafka生产者可以通过设置acks参数来控制数据是否需要等待broker的响应。例如,当acks=0时,生产者不需要等待broker的响应就可以认定消息是发送成功的,这种情况可能会导致消息丢失。而当acks=1时,leader不需要等待副本的同步就可以认定消息是发送成功的,当leader挂掉时消息同样会丢失。当acks=-1时,leader收到消息并且所有副本都已经同步数据之后再认定消息发送成功,这样可以保证数据的可靠性。

在消费端,Kafka通常不会出现消息丢失的情况。如果发生消息丢失,可以调offset来实现消息的重新消费。以上信息仅供参考,可以查阅Kafka相关的文档和书籍获取更多信息。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/142339?site
推荐阅读
相关标签
  

闽ICP备14008679号