cache_busters
is an automatic cache invalidation system. It works by
listening on a database's (such as PostgreSQL or MySQL) replication protocol,
and invalidating caches (such as memcached or redis) based on dirtied data.
Basic architecture:
Can be configured via either a simple configuration file (for individual deployments) or via a REST API (for multi-tenanted deployments).
A coordinator is responsible for making sure that at all times there is a live
cache_busters
node which is handling invalidation for a given database. It's ok if there are multiple running.In a multi-tenanted deployment, configuration data is stored in a database.
Inside each
cache_busters
node, connections to a cache are stored in a variable sized pool and invalidated by LRU.It never tries to repopulate a cache, only flush.
An example configuration file (need to figure out the REST equivalent):
- caches:
- "127.0.0.1"
- database:
host: "127.0.0.1" user: "root"
- on_update:
- test_table:
- "{id}-{name}"
- animals:
- "{id}-{name}"
- Figure out what sort of cooperation we need to pretend to be a slave.
- In multi-tenanted mode how does the networking for all this work out.