999 karma · joined November 10, 2011
We know that we can't have 100% harvest and 100% yield in the presence of partitions. We can play with different things though to shape the curve of these things as conditions worsen, however
MTTR is bounded by reelection latency, rather than replica recovery, although you still may eat a write amplification cost for rereplication.
write amplification is 3-5x of non-quorum-backed 2PC system, depending on replication ensemble size.
google further multiplies write amplification with geo-redundancy, so bump that WA by another 3x+.
it's an insanely high cost to pay for availability, but for an advertising company it's important to count the beans accurately.
Sometimes it's helpful to consider a distributed system through the lens of "harvest vs yield" where harvest is the proportion of information in a system reflected by a response, and yield which is the probability of receiving a response at all.
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24...
Multiple files does mean multiple threads. Unless you manage to run this without a modern operating system.
I generally prefer memcache unless you have a super locked-down infrastructure (no engineers to deploy a KEYS operation that destroys a shard and all the systems that rely on the data inside until it's finished). Multithreaded + simpler API is great for multitenancy when you have to provide infrastructure to engineers who don't want to learn about infrastructure.