kafka消息不丢失制(ack机制)

一、生产者生产数据不丢失

1、生产者数据不丢失过程图

说明:有多少个分区,就启动多少个线程来进行同步数据

2、 发送数据方式

可以采用同步或者异步的方式-过程图

可以采用同步或者异步的方式

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

1、生产者等待10s,如果broker没有给出ack相应,就认为失败。

2、生产者重试3次,如果还没有相应,就报错

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

1、先将数据保存在生产者端的buffer中。buffer大小是2万条

2、满足数据阈值或者数量阈值其中的一个条件就可以发送数据。

3、发送一批数据的大小是500条

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

3、ack机制(确认机制)

生产者数据不抵事,需要服务端返回一个确认码,即ack响应码;ack的响应有三个状态值

0:生产者只负责发送数据,不关心数据是否丢失,响应的状态码为0(丢失的数据,需要再次发送      )

1:partition的leader收到数据,响应的状态码为1

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

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

 

二、kafka的broker中数据不丢失

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

 

三、消费者消费数据不丢失

在消费者消费数据的时候,只要每个消费者记录好offset值即可,就能保证数据不丢失。

发布了124 篇原创文章 · 获赞 21 · 访问量 3193

猜你喜欢

转载自blog.csdn.net/qq_44065303/article/details/105409116
今日推荐