和之前Cristian’s算法不同,这里的同步是由master服务器发起的,而之前的算法是所有服务器主动去时间服务器请求同步。
master服务器发送请求到所有slave服务器,接收到所有的slave服务器时间后,计算时间的平均值,然后将这个值回填至所有的服务器,其中也包括master服务器。以上面图中的例子作为讲解,
master请求时的时间是3:00:00,而此时另外两台服务器的时间分别是2:59:50和3:00:25,。另外两台接收到请求后分别返回与master的时间差-10和25。master接收到这两个值后进行计算 (-10 + 25 )/ 3 = 5, 5 - (-10) = 15 , 5 - 25 = -20,分别将15和-20回填至另外两台服务器。