Optimism vs. Pessimism in Distributed Systems
brooker.co.za
brooker.co.za
Time is the thing that we don't have enough of at request time because a round trip takes years in computer time. (See "latency numbers every programmer should know")
It seems contention is the critical factor: if I have a database key and I want to scale concurrent access to it, we are contended on that key to see if other users are writing conflicting changes to the same key, such as MVCC.
Optimistic - assume no contention (and handle it when it happens)
Pessimistic - assume lots of contention (prepare to handle it before it happens)
The coordination of shared resources is the key problem in both fields. Distributed computing is more complex since you're adding in the concept of communication which may be unreliable.