Producer đặt qua compression.type, chọn một trong: none, gzip, snappy, lz4, zstd. Producer nén cả một batch message trước khi gửi, broker lưu nguyên dạng nén, consumer giải nén — tiết kiệm băng thông mạng lẫn dung lượng đĩa.
Tương tác với batching: nén hoạt động trên batch, nên batch càng lớn thì tỉ lệ nén càng tốt. Tăng linger.ms và batch.size cho producer gom nhiều message hơn mỗi lần gửi → nén hiệu quả hơn.
Đánh đổi throughput vs CPU:
| Codec | Tỉ lệ nén | CPU | Ghi chú |
|---|---|---|---|
snappy, lz4 | trung bình | thấp | nhanh, độ trễ thấp |
gzip | cao | cao | tốn CPU nhất |
zstd | cao | vừa | cân bằng tốt (từ Kafka 2.1) |
Quy tắc: cần thông lượng cao/độ trễ thấp → lz4/snappy. Muốn tiết kiệm mạng và đĩa tối đa mà chịu được CPU → zstd (thường là lựa chọn cân bằng nhất) hoặc gzip.