我在任何地方都找不到满意的答案,很抱歉这个问题看起来微不足道:
在Kafka中,在生产者端,一个请求是否可以包含对不同分区的多个批处理
我在文档中看到单词batch和requests被用作同义词,我希望能对此有所澄清。
如果是,这将如何影响ack策略
确认是按批次还是按请求?
Kafka请求(和响应(是通过网络在Kafka客户端和代理之间发送的消息。Kafka协议使用了许多类型的请求,您可以在Kafka的协议文档中找到它们。
Produce和Fetch请求用于交换记录。它们都包含Kafka批处理,它是协议描述中的RECORDS
字段。Kafka批处理用于将多个记录分组在一起,并通过共享所有记录的元数据来保存一些字节。您可以在文档中找到批次的确切格式。
TLDR:请求/响应是Kafka客户端和代理之间交换的完整消息。有些请求包含作为记录组的Kafka批处理。
我不确定你问的是生产者还是消费者。以下是一些可能回答您问题的信息。
在生产商方面:
默认情况下,Kafka生产者将批量累积记录,最大可达16KB。默认情况下,生产者将有多达5个请求在飞行中,这意味着可以同时向Kafka发送5个批次。与此同时,生产商开始为下一批产品积累数据。
acks
配置控制应答所需的代理数量,以便将每个请求视为成功。
在消费者方面:
默认情况下,Kafka消费者定期调用poll()
,以获得每次轮询最多500条记录。
同样在默认情况下,Kafka消费者将每5秒确认一次。
这意味着使用者将提交在最后5秒内由poll()
的所有后续调用轮询的所有记录。
希望这能有所帮助!