首页 > 代码库 > 分布式系统阅读笔记(十四)-----时钟和全局状态

分布式系统阅读笔记(十四)-----时钟和全局状态

介绍

在分布式系统中,时间是一个巨大的问题,因为在不同的电脑上会有他们自己的物理时间,如何做到状态事务的一致性往往比较难。缺少一个全局的物理时间使得很难去发现一段分布式程序的执行的状态是如何。

时钟,事件,进程状态和时间同步算法

小标题中提到的3个 名次在分布式的时间中出现最多频率的词。如何同步不同机器上的物理时间呢,下面简单的列举几个算法

1、一个叫Cristian方法同步物理时间的办法,这个方法会用到一个额外的时间服务器,但是这里会有个问题,如果这个服务挂了,岂不是同步失效了,不过你可以构建一个时间服务器集群服务。

2、第二个方法叫做Berkeley算法。

3、第三个方法通过Network Time Protocol (NTP)协议,该协议定义了一个时间服务和分布式的时间协议构建于网络之上。

逻辑时间和时钟

有的时候计算机上的物理时间往往不同,但是可以自己定义一套逻辑时间的规范,来记录消息事件的有序性。典型的方法就是向量时钟表示法,(V[1], V[2], V[3],...),V[i]代表的是第Pi进程的已发生事件数。通过比较向量值的大小得出时间event的顺序,只有每个V[i]<V[j]才能定义前者小于后者,此算法的缺点是太占存储空间了,每个时间上存储了所有的进程的时间数的表示。

全局状态

全局状态指的是一个系统他的执行的情况。比如下面的一些场景中就需要状态的检测:1、垃圾回收的时候。2、死锁的检测。3、终止条件的检测。当然这些情景的检测在分布式的环境下都显得不是特别容易。这里提供的一个算法实现叫做"snapshot"的算法。

分布式调试

分布式调试的核心技术点在于监视整个系统,并对执行的结果状态进行观察,并收集其中的状态。


参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair

分布式系统阅读笔记(十四)-----时钟和全局状态