| Leader election and distributed locking reduce to the same problem… which is proven to be impossible. It means in some edge case it will fail on you, is your system handling those cases? I didn’t read past this: > Systems like Apache ZooKeeper or Postgres (via Advisory Locks) provide the required building blocks for this Zookeeper is the original sin. Convincing a whole generation of programmers that distributed lock are a feasible solution. This is my biggest pet peeve in distributed systems. —— And if you don’t believe me, maybe you’ll trust Kyle K. of Jepsen fame: > However, perfect failure detectors are impossible in asynchronous networks. Links to: https://www.cs.utexas.edu/~lorenzo/corsi/cs380d/papers/p225-... https://jepsen.io/analyses/datomic-pro-1.0.7075 |
'Technically' intractable problems are solvable just fine in a way that is almost as useful as solving them completely if you can achieve one of two things:
* Reliably identify when you've encountered an unsolvable case (usefulness of this approach depends on the exact problem you're solving).
or
* Reduce the probability of unsolvable cases/incorrect solutions to a level low enough to not actually happen in practice.
'Technically' GUIDs are impossible, reliable network communication (TCP) is impossible, O^2 time complexity functions will grow to unusably large running times - but in practice all of these things are used constantly to solve real problems.