[enhance]: support multiple gRPC compression algorithms and configurable zstd codec
Author: xiaofan-luanCreated Sep 17, 2026Updated Sep 17, 2026
Summary
Enhance Milvus's internal gRPC compression:
- Support multiple compression algorithms:
zstd(existing),snappy, ands2. - Make the zstd compression level configurable via 4 coarse tiers (
fastest/default/better/best), defaulting todefault. - Add a zstd per-frame CRC32 checksum toggle (
grpc.client.compressionCRC, defaultfalse). - Scale the zstd codec concurrency with the tier (
tier × GOMAXPROCS) and reuse compressed buffers via a bounded pool (capped at2 × GOMAXPROCS). - Upgrade
github.com/klauspost/compressfrom v1.18.7 to v1.20.0.
Compression settings are static (read once at startup / dial time); they are not hot-reloadable.
Config
| Param | Values | Default |
|---|---|---|
grpc.client.compressionEnabled |
bool | false |
grpc.client.compressionAlgorithm |
zstd / snappy / s2 |
zstd |
grpc.client.compressionLevel |
fastest / default / better / best |
default |
grpc.client.compressionCRC |
bool | false |
Compression applies to component-to-component gRPC traffic and remains opt-in via grpc.client.compressionEnabled.
Source: milvus-io/milvus