High-performance read-through cache for object storage
6 hours ago
- #object-storage
- #high-performance
- #cache
- High-performance read-through cache for object storage with a simple HTTP API.
- Hybrid memory + disk cache powered by foyer, designed for caching immutable blobs.
- Works with any S3-compatible backend but has its own /fetch API requiring a precise Range header.
- Fixed page size of 16 MiB, mapping requested byte ranges to page-aligned lookups.
- Coalesces concurrent requests for the same page and makes hedged requests to manage tail latency.
- Can attempt redundant buckets for a given object, with at most 2 buckets attempted per page miss.
- HEAD|GET /fetch/{kind}/{object} endpoint where 'kind' identifies the bucket set and 'object' is the S3 object key.
- C0-Bucket header allows specifying bucket preference order; C0-Config header overrides S3 request configuration.
- Response includes standard HTTP semantics (206 Partial Content, 404 Not Found, etc.) with specific headers like Content-Range and C0-Status.
- GET /stats returns throughput stats as JSON; GET /metrics returns Prometheus text format metrics.
- Docker images available with configurable options like memory, disk path, TLS settings, and port.