时间同步不需要绝对的精确时间,如果进程间没有相互作用,就不需要时钟同步并且进程所关心的不是说明时间做什么工作,它们所关心的是事件发生的顺序:
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)