~/talk

Caching half a billion user transactions

Talkat Clojure/west 2016 · 2016-04-15..04-16· [web-performance, distributed-systems]
slides:none on file

A homegrown Clojure cache backs a Memcached cluster to serve ~half a billion transactions by decoupling invalidation from eviction, using logical timestamps stored persistently (initially DynamoDB, later moved off after ~$10k/month costs), protocol-buf + gzip for serialization, and a three-tier generational/local/remote design. A delay-based local cache ensures each DAG of dependent computations runs once per generation, cutting repeated 20s recomputes to milliseconds; ~600 lines across three files implement it and it works in production across ~170 EC2 instances.

AI-written summary · about

  1. 0:00Start
  2. 0:33LEVEL APP + PLATFORM
  3. 4:59EVICTION & INVALIDATION
  4. 6:58NAMING
  5. 10:13LEVEL CACHE-DEPENDENCIES
  6. 13:51RACE CONDITIONS
  7. 16:00MEM CACHE - PROBLEMS
  8. 16:36CORE CACHE
  9. 26:33A GENERTION CACHE, WITH LOCAL AND REMOTE PROVIDERS
  10. 30:00WATCH YOUR DASHBOARDS
  11. 30:43CLOJURE PERFORMANCE
  12. 33:50HELLO, AGAIN
  13. 36:25THE FUTURE
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.