当前位置:   article > 正文

Kafka中的数据不丢失机制_kafka生产者会不会丢数据

kafka生产者会不会丢数据

1. 生产者生产数据不丢失


发送消息方式

生产者发送给kafka数据,可以采用同步方式异步方式

同步方式

发送一批数据给kafka后,等待kafka返回结果

  1. 生产者等待10s,如果broker没有给出ack响应,就认为失败。
  2. 生产者重试3次,如果还没有响应,就报错.
异步方式

发送一批数据给kafka,只是提供一个回调函数

  1. 先将数据保存在生产者端的buffer中。buffer大小是2万条 。
  2. 满足数据阈值或者数量阈值其中的一个条件就可以发送数据。
  3. 发送一批数据的大小是500条。

注:如果broker迟迟不给ack,而buffer又满了,开发者可以设置是否直接清空buffer中的数据。


ack机制(确认机制)

生产者数据发送出去,需要服务端返回一个确认码,即ack响应码;ack的响应有三个状态值0,1,-1

0:生产者只负责发送数据,不关心数据是否丢失,丢失的数据,需要再次发送

1:partition的leader收到数据,不管follow是否同步完数据,响应的状态码为1

-1:所有的从节点都收到数据,响应的状态码为-1

如果broker端一直不返回ack状态,producer永远不知道是否成功;producer可以设置一个超时时间10s,超过时间认为失败。


2. broker中数据不丢失

在broker中,保证数据不丢失主要是通过副本因子(冗余),防止数据丢失。


3. 消费者消费数据不丢失

在消费者消费数据的时候,只要每个消费者记录好offset值即可,就能保证数据不丢失。也就是需要我们自己维护偏移量(offset),可保存在 Redis 中。

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

闽ICP备14008679号