kafka

 

producer 生产者
调用send(ProducerRecord)方法发送数据-》Interceptors拦截器-》Serializer序列化-》Partitioner分区器

分区器将数据发到不同的分区,分区器来规定数据发到哪个分区,分区器将数据发到一个缓存队列(双端队列)里面,队列的大小默认为32m,
队列的每个批次(ProducerBatch)的大小默认为16k,

开启sender线程拉取数据发送到kafka集群,
batch.size:只有数据积累到batch.size之后,sender才会发送数据,默认为16k
linger.ms:如果数据迟迟未达到batch.size,sender等到linger.ms设置的时间到了之后就会发送数据,默认值为0ms,表示没有延迟

batch.size和linger.ms是或关系,两个条件达成一个sender就会发送数据

sender InfightRequests,默认每个broker节点最多缓存5个请求,
发送成功之后,kafka集群进行副本的同步,同步完成之后进行ack应答
0:生产者发送过来的数据,不需要等待数据落盘应答
1:生产者发送过来的数据,Leader收到数据后应答
-1:生产者发送过来的数据,Leader及flower所有都收齐数据后应答

 


** 一个消费者消费一个分区

 

KAFKA分区好处

 

 

发送流程

 

 

 

 

 

 

posted @ 2022-08-04 22:01  ~╰☆終極﹏o  阅读(40)  评论(0)    收藏  举报