目的:
由于分布式系统中各个机器之间的系统时间同步差异,导致无法用物理时钟准确衡量事件的先后顺序。因此,提出了逻辑时钟这一概念,用来定义分布式系统中所有事件的发生顺序
背景
偏序与全序关系,这在大学的线性代数课程中有相关概念。简单的讲,对于一个数字集合,如果能够定义两两之间的先后关系,则该集合为全序关系。如果该集合中分为多个子集,子集内部两两有先后关系,而子集之间没有先后关系,则该集合为偏序关系。
逻辑时钟
如上图所示,根据逻辑时钟的原理,我们可以定义这些事件集的一个偏序关系。在这个偏序集中,存在因果关系的事件顺序是正确的。如果要得到所有事件的一个全序关系(逻辑时钟时间戳序号相等的事件间先后关系),我们可以自己定义一个规则,比如进程号小的排序在前,这样就可以得到全部事件的一个全序关系了。
注意:Lamport逻辑时钟只保证因果关系(偏序)的正确性,不保证绝对时序的正确性。
逻辑时钟解决资源竞争问题
前提:对于任意的两个进程Pi和Pj,它们之间传递的消息是按照发送顺序被接收到的, 并且所有的消息最终都会被接收到
具体实现流程不细讲,大概是每个进程在申请资源前都会通知所有进程,从而有一个全局顺序,按这个顺序去获取资源。2PC