1.分布式同步算法:逻辑时钟,又称Lamport算法
时间同步不需要绝对的精确时间,如果进程间没有相互作用,就不需要时钟同步并且进程所关心的不是说明时间做什么工作,它们锁关心的是事件发生的顺序
happen before:如果event a 在event b之前发生,则记为:a->b,且happen before是传递的,即如果a->b,b->c则a->c
时间戳(timestamp)
在分布式系统中,每一台机器都设置一个整型变量作为时钟,当a发生时,用这个时钟的值作为a的timestamp,记为C(a),这样有:if a->b then C(a) < C(b),对于同一机器上的任两个事件a,b有C(a) != C(b)
在进程通信中,消息中含有发生时的时间戳,消息到达目标机器时,它的内核检查其时间戳,若它的时间小于所收到消息的时间戳,则修改它的时钟,使其时钟值大于接受信息的时间戳,如下图,进程间的通信时间不一致,当C(a) > C(b),调整C(b),使C(a)<C(b),如下面红色数字所示