If you need a global lock in your distributed system, then you&#x27;re already in trouble.  In <i>most</i> cases, the best solution is to rewrite your software so that you don&#x27;t need the lock.  I don&#x27;t want to say all, because I&#x27;m sure there are use cases where it would be impossible to do so.  However, for my own research, I&#x27;m having trouble finding examples where a global lock is absolutely necessary.  If anyone has any examples, please send them to me.<p>For example, a lot of people say, &quot;updating a bank balance&quot;.  But even that can easily be eventually consistent.  You send increments and decrements and settle up at the end.  Yes, your balance might go negative, but that&#x27;s what ATM limits are for -- the most you could go negative is that limit.  Most other systems can be written the same way.  And for non-numeric values, there are always vector clocks or timestamps or quorum to determine which update came next, or you could send a client a list of all recent updates and let the client &quot;do the right thing&quot;.