- 1
- 0
- 约5.5千字
- 约 8页
- 2017-10-19 发布于重庆
- 举报
分布式算法设计基础(第十章)
分布式算法设计基础
第10章 快 照
0.引言
对运行在计算机网络上的一个基本计算程序(或算法)进行观察,了解各个结点当前计算的状态,是一项有意义的活动,同时也是一件困难的事情,需要一种称之为快照的技术。
所谓快照,就是分布式算法在执行中可能达到的一个形态,它是由各个进程的瞬间状态和通道的瞬间状态拼起来形成的一个全局状态。从初始形态出发,系统的一个形态可以是分布式算法可能到达的一个形态,也可能是分布式算法永远不可能达到的一个形态。前者可能在某次运行中出现,是一个有意义的快照,后者无论算法运行多少次,也是不可能达到的形态,是没有意义的形态。
一些应用引起了快照,例如:
⑴ 稳定性质: 探测当前网络各个结点的计算是否已经进入停滞的稳定状态,用于离线分析;
算法的一个形态的一个性质P是稳定的,如果
P()∧??P()
⑵ 容错计算: 判断当前各结点计算是否出错,以及提供如何排错和避错的有用信息,可以让算法在快照处重新计算,从而实现容错计算;
⑶ 调试分布式程序: 探测各结点进程在程序调试运行中的结果,辅助程序的运行和调试;
本章的主要任务是:针对一个分布式算法,如何获得该算法有意义的快照。实际上,我们也可以认为,一个分布式算法的一个快照是由取自各个进程的局部状态(局部快照)、通道的状态拼装而成的。
1.基本概念
Ev:设C是由进程P组成的一个分布式系统的一个计算,该计算的事件集合记为Ev。
令是一个分布式系统的计算,它是由一个进程的集合组成的。计算中事件的集合用表示。关于进程间的通信,我们取弱公平假设:每条消息都将在有限的时间内收到,而且网络是强连通的。进程的局部计算是由进程的状态序列组成的,其中是进程的初始状态。
以后,我们用进程的事件的出现来标记从到的变迁。因此,
=∪p∈P {,,,…… }
在进程p的事件中,定义局部因果序关系如下:
?p? i≤j
一个全局快照由中每个进程的快照状态组成,我们记。快照中通道的状态定义为消息的集合。形态由快照状态和上面定义的通道状态组成。
send *pq : 由p发送给q的消息列表;
rcvd *pq : 由q收到的p发送的消息列表;
定义10.0 如果在一个全局快照中,进程的快照为,即是在事件和之间取快照,则满足≤的事件称为快照前事件;
如果在一个全局快照中,进程的快照为,即是在事件和之间取快照,则满足 的事件称为快照后事件。
由以上定义不难得知,在构造一个快照时,如果一条消息的发送事件是一个快照后事件,而它对应的接收事件是快照前事件,则所取得的快照是没有意义的。因为,任何一个算法的一个可以到达的有意义的形态,一定不会出现一个进程收到了另外一个进程尚未发送的消息。在P210图10-2中,所取的快照是没有意义的,因为进程p2取得的局部快照状态表明,p2收到了一条在进程p1的快照状态尚未发送的消息,这是不可能的,说明分布式算法不可能出现这样一种形态。
定义10.1 快照是适宜的,如果对每两个相邻进程和,恒有。
一个快照的适宜性隐含了在暗指的形态构造中,进程收到的来自进程的消息,一定是进程已经发送给进程的消息。
定义10.2 的一个割是一个集合,,满足:
∧
其中,表示所有事件的集合。
定义10.3 的一个一致割是一个集合,,满足:
∧
其中,表示所有事件的集合。
定义10.4 快照在计算中是有意义的,如果存在一个执行序列,满足是的一个形态。其中,是分布式系统的计算,它由进程集合组成。
定理2(三个概念的等价性定理) 令是一个快照,是所隐含的割,则下列三个命题是等价的:
(1) 是适宜的;
(2) 是一致割;
(3) 是有意义的。
证明:见教材P211页。
2. 两个快照算法
下面,我们介绍两个快照算法。
(1) Chandy-Lamport快照算法(见P213)
具体算法(略)。
引理10.6 如果至少有一个进程开始执行算法,那么,在有限时间内,所有进程将取得局部快照。
证明: 因为每个进程取得快照和发送消息mkr至多一次,快照算法的活动必然会在有限时间内停止。如果p是那时已经取得快照的一个进程,且q是p的邻居,那么,根据算法,q也将取得快照。这是由于基于弱公平性假设,p发送给q的mkr消息,在q收到之后,如果q尚未取得快照,那么算法将导致它马上取快照。因为至少有一个进程对算法进行初始化,则至少有一个进程已经取得快照,而网络的连通性蕴涵着所有进程都将取得快照。 □
如果算法由任意非空进程集合初始化,它能否正确工作?
定理10.7 在至少有一个进程初始化算法之后,Chandy-Lamport算法在有限时间内计算有意义的快照。
证明: 由前述引理,算法在有限时间内将取得快照。下面证明算法取得的快照是有意义的,即在快照后事件中接收的是快
原创力文档

文档评论(0)