Pulsar消息压缩解压全流程是Broker侧解压还是消费者侧解压?
Pulsar消息压缩工作机制解答
Pulsar的消息压缩为端到端实现,全程Broker不会执行解压操作,完整流程如下:
- 生产者阶段:你在初始化生产者时配置
compression.type参数(支持LZ4、ZSTD、SNAPPY、ZLIB等压缩算法),消息会在生产者客户端完成压缩后再发送到Broker,直接降低生产者到Broker的网络传输带宽占用。 - Broker阶段:收到压缩后的消息后,Broker不会对数据做解压处理,会直接将压缩后的原始数据持久化到底层存储,同时下发给消费者的时候也直接传输压缩数据,既节省了Broker的CPU算力,也降低了存储占用和Broker到消费者的传输带宽消耗。
- 消费者阶段:消费者客户端收到压缩消息后,会自动读取消息元数据中记录的压缩类型,在客户端本地完成解压,整个过程对上层业务逻辑完全透明,不需要额外编码适配。
你提到的官方文档描述的“传输过程中进行压缩”实际覆盖了全链路:生产者到Broker的传输、Broker持久化存储、Broker到消费者的传输三个阶段均为压缩状态,相比仅做传输层压缩的方案收益更高。
需要注意的是,如果生产环境存在不支持对应压缩算法的低版本消费者,会出现消息解压失败的问题,配置压缩策略前需要确认所有消费者客户端都支持你选定的压缩算法。
内容的提问来源于stack exchange,提问作者dashenswen
相关产品推荐
相关产品推荐

