分布式系统中的先后顺序问题 – 逻辑时钟, 原子钟和停止等待

idea at 
分布式系统中的先后顺序问题 – 逻辑时钟, 原子钟和停止等待的配图
分布式系统中的一致性问题, 本质就是操作的先后顺序问题. 先后顺序, 纯朴的理解就是时间的先后, 也即时钟的先后. 众所周知, 时钟受许多因素影响, 例如观察者, 时钟源(钟表, 系统时间), 时钟同步等等, 单纯依赖时钟的读数来区分先后顺序, 会造成许多的问题.以银行转账为例子.在一个虚拟的银行系统中, 用户直接修改离自己最近的银行的数据库, 而数据库本身会自动地将修改同步到其它地点.中国的用户 A 在中国的数据库里修改了自己账户的余额, 扣减 100 元, 同时修改了用户 B 在中国的数据库里的余额, 加上 100 元.接着, 用户 A 私下告诉在美国的用户 B, 说我已经给你转账了 10……