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分区好处
发送流程



浙公网安备 33010602011771号