维普资讯
计算机科学 2002Vo1.29N~-.9
分布式系统 中的全局状态算法及实现
An Algorithm ofGlobalStateinaDistributedSystem
陈 宁 王忠仁 丁香荣
(电子科技大学计算机学院 成都 610054)
Abstract G lobalstate.an importantconceptin adistributedsystem ,helpstosolveproblem ssuch ascocurrency·
mutualexclusionanddeadlock.etc.inadistributedsystem .Thispaper,alterattemptingtopresentreaderstheim—
portanceandnecessityofusingglobalstateinadistributedsystem ,givesan in—depthdiscussionofanalgorithm .
Keywords Globalstate,Distributedsnapshot,Middleware,Stableproperty
算法进行讨论 。
1.引言
协同工作的进程间往往需要知道对方 的状态 .在本地 系
全局状态是分布式 系统中的一个关键慨念 .分布式系统 统中。一个进 程可 以通过访 问对方 的进 程控制块而获取其现
同样需要处理在一个集中式环境中出现的如并发、互斥、死锁 在 的状态信息。而对于一个远程进程 ,由于网络 的延误 .它获
等问题 ,在分布式系统中对这些问题的处理变得更为复杂。比 得的状态信息往往是远程进程在过去某个时刻的状态 。这个
如在一个交易中,由于缺少全局状态信息,对可能出现的失败 时间上 的延迟再加上各系统的时钟不 同步使得进 程 问的协 同
提供一个回滚所需的检查点 (checkpoint)就变得很困难 。本文 工作变得更为复杂 .可用下面简单示例来说 明其复杂性 。
将对使用全局状态的必要性及其在基于消息中间件中使用的
二
图 1 两个银行 问转帐示意 图
假设某客户在两家银行开有帐户 .并在银行A 存有 100 发送 和接收的消息进行全面的观察 ,了解全局状 态才能避免
元 .现他将此存款转入银行 B去 ,转帐过程发生在下午 3:O0 错误 出现 。这里 ,为 了更深入讨论上述 问题 .我们 引入一种通
前后.由于银行间有一段距离 .转帐过程导致一定的时延。若 过分 布 式快 照获取 全 局状 态 的算 法 :全 局 状 态 构造 算 法
我们需要在下午 3:OO统计银行帐户余额 ,可能会 出现 图 1所 GSRA (GlobalStateRecordingAlgorithm)。使用这个算法 ,
示几种情况 。 一 个分布式系统可 以获得一组分布式快照 ,并从 中确定当前
图中水平直线代表了一个与时问相关的进程 .带有箭头 分布式系统所处的全局状态 .检测当前 系统是否拥有某种稳
的直 线表示两个进程间的消息传递.这里表示转帐的消息传 定的特征 (stableproperty).因而能使系统在交易过程 中提供
递 。 检查点以支持在交易失败时进行 回滚操作。首先 ,需要对 以下
图 la)表示在 3:OO以前银行间的转帐过程 已经结束 .在 几个慨念进行定义 :
3:OO时进行统计 .某客户在银行 A 已无存款