kafka当中如何保证数据不丢失
1.生产者如何保证数据不丢失
2.消费者如何保证数据不丢失
3.broker如何保证数据不丢失
如何保证producer发送的数据不会丢失?
producer发送数据有两种方式:
同步发送:producer发送一条,topic里面保存一条,保存好了,继续发送下一条
缺点:效率太低
异步发送:你发你的,我收我的
缺点:容易造成数据丢失
通过一次发送一批数据(5000条或者10000条),
使用ack机制(发送消息之前请求应答),消息确认机制,ack的值可以设置为
1:主分区以及所有的副本分区都保存好了
0:主分区保存好了即可,副本恩分区不管
-1:没有任何保证机制,发送完了就不管了
如何阶段broker不会宕机的问题,使用副本机制来同步主分区当中的数据
消费者:优先选择主分区当中的数据进行消费,主分区当中的数据是最完整的
kafka会维护一个ISR分区列表,用于在主分区宕机之后,从ISR列表当中选择一个作为主分区
如何记录消费到了哪一条避免重复消费或者数据丢失?
通过offset来进行记录,可以将offset保存到redis或者HBASE里面去,下次消费的时候就将offset取出来