Kafka 客户端原理

137 阅读1分钟

RecordAccumulator 主要用来缓存消息 以便 Sender 线程可以批量发送。 RecordAccumulator 内部为每个分区都维护了一个双端队列,队列中的内容就是ProducerBatch,即 Deque<Producer_Batch>,ProducerBatch 中可以包含一至多个 ProducerRecord。 ProduceRequest请求在从 Sender 线程发往 Kafka 之前还会保存到 InFlightRequests 中, InFlightRequests 保存的具体对象是 Map<Nodeld, Deque>, 它的主要作用是缓存 了已经发出去但还 没有收到响应的请求。与此同时, InFlightRequests 通过配置参数还可 以限制每个连接(也就是 客户端与 Node 之间的连接)最多缓存的请求数。

参考:

《深入理解Kafka核心设计与实践原理》