LoongCollector将批聚合、序列化和压缩等操作从传统的发送阶段前置到Processor Runner线程,核心原因是避免发送重试时的重复计算:
传统方式的问题:当网络异常导致发送失败时,需要重试。如果序列化在Flusher Runner线程执行,每次重试都要重新进行批聚合、序列化和压缩——这些都是计算密集型操作,浪费大量CPU。
前置的好处:
- 避免重复计算:序列化结果随请求一起放入发送队列,重试时直接使用已有结果,无需重新计算。
- 减轻Flusher Runner负担:Flusher Runner只做请求分配和流控,逻辑简单,不容易成为瓶颈。
- 充分利用Processor Runner算力:Processor Runner本身就是计算密集型线程,可支持多个实例并行,将序列化合并到这个阶段不会引入额外瓶颈。
- 降低发送队列内存占用:序列化后的字节流通常比原始PipelineEventGroup占用更少内存(尤其经过压缩后)。
这是LoongCollector在可靠性和性能之间取得平衡的关键设计。




