分布式系统时钟同步

本文是《分布式系统原理与范型》读书笔记

集中式系统中,时间是明确的。

1、Cristian算法

它适用于只有一支机器上有WWV 接收器,其他所有机器都要与那台机器同步的系统。

拥有WWV接受器的机器叫做时间服务器。

每台机器义不大于x/2p秒的周期定期向时间服务器发送消息询问当前时间,时间服务器收到消息后就尽快发送含有当前时间的Cutc的消息应答。

存在两个问题:

a、时间不能倒退,如果发送者的时钟快,那么Cutc小鱼发送者请求的时间值C,不能简单地接受Cutc,需要逐渐改变,每次时钟中断,增加时间减少。

类似,如果如果发送者时钟慢,则逐渐加快。

b、从服务器发送的应答到发送者需要一定的时间,而且随着网络、服务器的负载,延迟的时间会改变。

需要估计消息传递时间。

2、Berkeley算法

在Cristian算法中,服务器是被动的。

在Berkeley算法中,服务器是主动地,它定期询问每台机器的时间,基于这些回答,让他计算出一个平均时间,并告诉其他机器讲它们的时钟拨快、或者拨慢,直到某个指定的减少量到达为止。

3、平均值算法

上面两中都是集中式算法。

将时间划分为固定长度的间隔。在每次间隔开始处,每台机器根据自己的时钟广播当前时间(广播不同事发送),在一台机器发送了他的时间后,启动本地定时器接受在某个间隔S里收到的其他广播,所有广播到达后,执行一个算法从这些值中计算得到一个新的时间值。

最简单的算法是:取其他机器值的平均值。

 

PS:目前还不知道物理时钟同步的算法有用在什么系统中。孤陋寡闻了

 

你可能感兴趣的:(分布式系统时钟同步)