4 ms·
You try another connection (after some timeout)? Or you start N requests in parallel and then pick the first response?
by linuxhansl 5y ago
You try another connection (after some timeout)?
Or you start N requests in parallel and then pick the first response?
- whateveracct 5y agoaren't retry policies inherently compromising on "A"? they fail and cause things to be slow when they take effect
- lostcolony 5y ago"After some timeout" - exactly. During that time you effectively have a partition; you have either accepted the write, meaning you are no longer consistent, or you are blocking on the write, meaning you are no longer available. If you have multiple, let's expand out to 3 instances (not necessary, but helps illustrate some of the issues better). A tells B something 10x. A also tells C something 10x. Even assuming you don't get inconsistent responses (i.e., B has both accepted and rejected the write), what happens if B accepts it, and C rejects it? Likewise, if you have high load, you're going to have race conditions leading to lack of consistency as well (A tells B and C x = 2, meanwhile C tells A and B that x = 3). You are favoring availability > consistency.