3 ms·
> FLP says it's always possible to not achieve consensus, but it says nothing about the probability of it. It says that the probability is not zero. That is a
by frankmcsherry 9y ago
> FLP says it's always possible to not achieve consensus, but it says nothing about the probability of it.
It says that the probability is not zero. That is a very important distinction for some people.
> You are much more likely to run into other problems that affect your availability, like code bugs or failed isolation between some components.
All the more reason not to claim that your system provides the guarantee.
- grogers 9y ago> It says that the probability is not zero. That is a very important distinction for some people I'm not a mathematician, but I'm pretty sure it doesn't even say the probability of failed consensus must be nonzero. For example, the cantor set shows that it is possible to have a set with infinite elements, but zero length. That is equivalent to an infinite number of interleavings where consensus doesn't occur, but the probability of hitting any of them is zero. Sure in real world systems, the probability would always be nonzero, but when it's still so close to zero, it practically doesn't matter. Which is why in the real world, people do build very reliable distributed systems out of unreliable components.
- frankmcsherry 9y agoFLP says that any deterministic algorithm satisfying agreement and validity must have non-terminating executions. If you are allowed to pick the distribution over the sequence of events in the system I'm sure that the probability of non-termination is quickly zero. If FLP are allowed to pick the distribution, the probability of non-termination can be one. Getting into a quantitative evaluation of the likelihood of consensus is beyond my ken, but different people have different beliefs about what constitute "in real systems", and different interpretations of "practically doesn't matter". For example, the fact that you are talking about data centers rather than satellites suggests (to me) that your beliefs about the scarcity and transience of partitions may not generalize. We can afford to be clear about what is true and what isn't, especially when trying to build reliable distributed systems. Note: Ben-Or's consensus algorithm uses randomization to drive the probability of termination to zero, but still has non-zero probability associated with any length of execution.