advCache by Borislav Glazunov

High‑performance in‑memory HTTP cache & reverse proxy for latency‑sensitive workloads.
Built in Go with sharded storage, TinyLFU admission, background refresh, upstream controls, and observability.

About Me

I’m Borislav Glazunov, 29 y.o., senior/lead developer (Golang, Rust, PHP).
Open to visa sponsorship in New Zealand, Australia, Canada, EU, and Cyprus.

About the Project

advCache — open‑source (Apache‑2.0) in‑memory HTTP cache & reverse proxy.

Throughput

160–170k RPS locally; ~250k RPS on 24‑core bare‑metal (50GB cache).

Memory

1.5–3GB overhead at 50GB (no traces); ~7GB at 100% OTEL sampling.

Hot Path

Zero allocations, sharded counters, per‑shard LRU, TinyLFU admission.

Control Plane

Runtime toggles: admission, eviction, refresh, compression, observability.

Observability

Prometheus/VictoriaMetrics + OpenTelemetry tracing.

Kubernetes

Health probes, ConfigMap config, Docker image.

Quickstart (Starter Config)

cache:
  api:
    port: '8020'   # <-- CHANGEME
  upstream:
    backend:
      addr: http://127.0.0.1:8081   # <-- CHANGEME origin
  compression:
    enabled: true
  observability:
    enabled: true
    endpoint: 127.0.0.1:4318       # <-- CHANGEME OTEL Collector
  admission:
    enabled: true

See the full configuration in the repo README.

Runtime Endpoints

  • Main: GET /{any:*}
  • Health: GET /k8s/probe
  • Metrics: GET /metrics
  • Bypass: /cache/bypass, /on, /off
  • Compression: /cache/http/compression, /on, /off
  • Config: /cache/config
  • Entry: /cache/entry?key=<uint64>
  • Clear: /cache/clear?token=
  • Invalidate: /cache/invalidate
  • Upstream: /cache/upstream/policy, /await, /deny
  • Evictor: /cache/eviction, /on, /off, /scale
  • Lifetime: /cache/lifetime-manager, /on, /off
  • GC: /cache/force-gc, /on, /off, /call
  • Admission: /cache/admission, /on, /off
  • Tracing: /cache/observability, /on, /off

Open Source & Modular

Apache‑2.0 license. Contributions welcome.

Star on GitHub