@@ -101,82 +101,19 @@ load_manager:
101101 # Examples: ["/system/*", "/admin/critical-topic", "/production/*"]
102102 blacklist_topics : []
103103
104- # WAL and Cloud Storage Configuration
105- # Cloud-native persistence: local WAL (hot path) + background cloud uploads (durability)
106- wal_cloud :
107- # Local Write-Ahead Log: Fast append-only log with in-memory cache
104+ # Storage Configuration
105+ # Modes: local | shared_fs | object_store
106+ storage :
107+ mode : local
108+ local_wal_root : " ./danube-data/wal"
109+ metadata_prefix : " /danube"
110+ local_retention :
111+ time_minutes : 2880
112+ size_mb : 20480
113+ check_interval_minutes : 5
108114 wal :
109- # WAL root directory (per-topic subdirectories created automatically)
110- # Use fast local SSD for best performance. Set to null for in-memory mode (testing only)
111- dir : " ./danube-data/wal"
112-
113- # Base filename for WAL (with rotation: wal.<seq>.log)
114- file_name : " wal.log"
115-
116- # In-memory cache capacity (number of recent messages)
117- # Higher = better consumer hit rates, more memory. Lower = less memory, more disk reads
118- cache_capacity : 1024
119-
120- # File sync configuration: fsync cadence and write batching
121- file_sync :
122- # Flush interval (milliseconds): how often to fsync buffered writes
123- # Production: 5000 (5s). High-throughput: 10000 (10s). Low-latency: 1000 (1s)
124- interval_ms : 5000
125-
126- # Max buffered bytes before forcing a flush (write batch size)
127- # Larger = better throughput. Smaller = lower latency, more frequent fsyncs
128- max_batch_bytes : 10485760 # 10 MiB
129-
130- # File rotation: prevents unbounded file growth, creates wal.0.log, wal.1.log, etc.
131115 rotation :
132- # Size-based rotation threshold (bytes)
133- max_bytes : 536870912 # 512 MiB
134-
135- # Time-based rotation threshold (hours) - optional
136- # Ensures no infinitely old files (good for low-traffic topics)
137- # max_hours: 24
138-
139- # Local WAL retention: prunes old files after cloud upload
140- # Both time and size limits applied; whichever triggers first
141- retention :
142- # Time-based: delete files older than this (minutes)
143- # Must be larger than uploader interval. Production: 48h. Min: 24h
144- time_minutes : 2880 # 48 hours
145-
146- # Size-based: delete oldest files when total exceeds this (MB per topic)
147- # Production: 20 GiB. Space-constrained: 10 GiB minimum
148- size_mb : 20480 # 20 GiB
149-
150- # How often to check retention policy (minutes)
151- check_interval_minutes : 5
152-
153- # Cloud Uploader: background task that persists WAL to cloud storage
154- uploader :
155- # Enable cloud uploads (disable for local-only dev/testing)
156- enabled : false
157-
158- # Upload cycle interval (seconds)
159- # Testing: 30s. Production: 300s (5 min). High-durability: 60s (1 min)
160- interval_seconds : 30
161-
162- # Metadata root prefix (change only for multiple independent clusters)
163- root_prefix : " /danube-data"
164-
165- # Max cloud object size (MB) - optimal for S3/GCS multipart uploads
166- max_object_mb : 256
167-
168- # Cloud Storage Backend (powered by OpenDAL)
169- cloud :
170- # Backend options: fs | s3 | gcs | azblob | memory
171- # Production: Use s3/gcs/azblob for cloud-native. Multi-broker: shared fs or cloud
172- backend : " fs"
173-
174- # Storage root (backend-specific format)
175- # fs: "./path", s3: "s3://bucket/prefix", gcs: "gcs://bucket/prefix"
176- # Multi-broker: must be shared/accessible across all brokers
177- root : " ./danube-data/cloud-storage"
178-
179- # Backend-specific options - see commented examples below
116+ max_bytes : 536870912
180117
181118# Broker policies, that can be overwritten by namespace / topic policies
182119policies :
0 commit comments