赞
踩
生产者发送给kafka数据,可以采用同步方式或异步方式
发送一批数据给kafka后,等待kafka返回结果:
发送一批数据给kafka,只是提供一个回调函数:
注:如果broker迟迟不给ack,而buffer又满了,开发者可以设置是否直接清空buffer中的数据。
生产者数据发送出去,需要服务端返回一个确认码,即ack响应码;ack的响应有三个状态值0,1,-1
0:生产者只负责发送数据,不关心数据是否丢失,丢失的数据,需要再次发送
1:partition的leader收到数据,不管follow是否同步完数据,响应的状态码为1
-1:所有的从节点都收到数据,响应的状态码为-1
如果broker端一直不返回ack状态,producer永远不知道是否成功;producer可以设置一个超时时间10s,超过时间认为失败。
在broker中,保证数据不丢失主要是通过副本因子(冗余),防止数据丢失。
在消费者消费数据的时候,只要每个消费者记录好offset值即可,就能保证数据不丢失。也就是需要我们自己维护偏移量(offset),可保存在 Redis 中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。