3 ms·
Serving configuration data at scale with high availability
- latch 12y agoEasy to play armchair quarterback, but if each server is storing the complete list, why not just use a queue to push out the change? for { message = blockWaitingForMessage() if message.action == "add" { lock() blacklist[message.domain] = true unlock() } } On startup you'd need to bootstrap a server. Use a database as your source of truth, and wrap an internal-only api to fetch all domains.
- th0br0 12y agoBecause this way you only read the data in once and don't need to make any changes to it which allows you to pick different data structures.
- hatred 12y agoMay be. I read the article twice but had the exact same reaction on both occasions that somehow we used a "big" bat to kill a small ant when some easier solutions would have sufficed. Though, it's looks very likely that I might be missing something really minuscule.