Compression
OSO Kafka Backup supports multiple compression algorithms to reduce storage costs and improve transfer speeds.
Supported Algorithms
| Algorithm | Description | Best For |
|---|---|---|
| Zstd | Zstandard - high ratio, fast | General use (default) |
| LZ4 | Very fast, moderate ratio | Speed-critical workloads |
| None | No compression | Pre-compressed data |
Compression Comparison
Performance Characteristics
| Metric | Zstd (level 3) | Zstd (level 9) | LZ4 | None |
|---|---|---|---|---|
| Compression ratio | 4-6x | 6-10x | 2-3x | 1x |
| Compression speed | ~400 MB/s | ~100 MB/s | ~700 MB/s | N/A |
| Decompression speed | ~1000 MB/s | ~900 MB/s | ~2000 MB/s | N/A |
| CPU usage | Medium | High | Low | None |
| Memory usage | Medium | High | Low | None |
Real-World Example
For 100 GB of JSON Kafka messages:
| Algorithm | Compressed Size | Backup Time | Restore Time |
|---|---|---|---|
| Zstd-3 | ~20 GB | 5 min | 2 min |
| Zstd-9 | ~12 GB | 15 min | 2 min |
| LZ4 | ~40 GB | 3 min | 1 min |
| None | 100 GB | 2 min | 2 min |
Configuration
Basic Configuration
backup:
compression: zstd # Algorithm: zstd, lz4, none
compression_level: 3 # Level: 1-22 for zstd, 1-12 for lz4
Zstd Configuration
backup:
compression: zstd
compression_level: 3 # Default, good balance
# Level guidelines:
# 1-3: Fast compression, good ratio
# 4-6: Balanced (recommended)
# 7-12: Slower, better ratio
# 13-22: Very slow, best ratio (archival)
LZ4 Configuration
backup:
compression: lz4
compression_level: 1 # LZ4 levels have less impact
No Compression
backup:
compression: none
# Use when:
# - Data is already compressed (images, video)
# - Speed is critical and storage is cheap
# - Debugging/inspection needed
How Compression Works
Backup Compression Pipeline
Kafka Records → Batch → Compress → Write to Storage
↓ ↓ ↓ ↓
Raw data Group Apply Segment
(1 MB) records algorithm file
(10 MB) (2 MB) (.zst)
Detailed flow:
┌─────────────────────────────────────────────────────────────────────┐
│ Compression Pipeline │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Batch Records │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Record 1 │ Record 2 │ Record 3 │ ... │ Record N │ │
│ │ (100 B) │ (200 B) │ (150 B) │ │ (180 B) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 2. Serialize Batch │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Header │ Record 1 │ Record 2 │ ... │ Record N │ Checksum │ │
│ │ (32 B) │ │ │ │ │ (4 B) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 3. Compress │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Zstd Frame │ │
│ │ ┌───────────────────────────────────────────────────────┐ │ │
│ │ │ Magic │ Frame Header │ Compressed Blocks │ Checksum │ │ │