- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
异步分布式系统(续) ※异步模型对在任意执行中涉及到的时间间隔不允许有任何假设,这准确地建模了Internet,在那里对服务器或网络的负载没有任何固有的限制,因此对于(例如,使用ftp传送一个文件)要花多长的时间也就没有限制。有时一封Email信可能要花数天的时间才能到达。Web不能总是在一个合理的时间限制之内提供一个特定的响应。 异步分布式系统(续) ※任何对于异步分布式系统有效的解决方案对于同步分布式系统来说也是有效的。实际的分布式系统常常是异步的,因为需要进程共享处理器以及通信通道共享网络。例如,如果太多具有未知特性的进程在共享一台处理器,那么它们任何一个结果的性能都不能得到保证。 ※但是,有许多对于一个异步系统不能解决的设计问题,当使用某些方面的时间时就能够被解决。对于要在一个最终期限前传递的多媒体数据流的每一个元素就是那样的一个问题。 事件定序 在许多情况下,我们想知道一个进程中的一个事件(发送或接收一个消息)是发生在另一个进程中的另一个事件之前、之后或是并发地发生。 一个系统的执行可以用事件及其顺序(ordering)来描述,尽管缺乏精确的时钟。 Example 我们考虑在一组email用户X、Y、Z和A之间的一组如下的交换: ①用户X发送一封具有主题Meeting的信; ②用户Y和Z通过发送一封具有主题Re:Meeting的信进行回答; 首先X的信被发送,Y读取它并回答;Z读取X的信和Y的回答,然后 发送另一封回答信(它引用了X和Y的信)。但是由于消息传递独 立的延迟,这些信可能按下图的方式被传递: Example (cont.) 这样某些用户可能以错误的顺序看到这些信,例如用户A可能看见: ?如果X、Y、Z的计算机的时钟能够同步,那么每一封信在它被发送的时候,就能够携带其局部计算机时钟的时间。例如,信件m1,m2和m3将携带时间t1,t2和t3(t1t2t3)。接收到的信件将按照其时间顺序显示给用户。如果这些时钟是大致同步的,那么这些时间戳(timestamps)经常具有正确的顺序。 逻辑时钟 因为在分布式系统中这些时钟不能完全地被同步,Lamport提出了一种逻辑时间模型,可以用来对运行在分布式系统不同的计算机上的进程中的事件提供一种定序(ordering)。 逻辑时间不需要求助于时钟而推断出消息(信件)出现的次序。 逻辑时钟(续) 逻辑上,我们知道一封信在其被发送之后才被接收,因此我们可以声明一些事件对的逻辑顺序,例如我们仅仅考虑跟X、Y相关的事件: X sends m1 before Y receives m1; Y sends m2 before X receives m2. 我们也知道在接受信件之后才发送回答,因此我们有下面的逻辑顺序(对于Y): Y receives m1 before sending m2. 逻辑时间进一步采用这个思想,给每一个事件分配一个数值(相应于其逻辑顺序),以便后面的事件比早先的事件有更高的数值。例如,前面的图中在X和Y的事件上显示数值1-4。 故障模型 分布式系统中,进程和通信通道都可能失效,故障模型定义了故障可能发生的方式,以便理解故障的影响。 遗漏故障(Omission failures) 指一个进程或通信通道不能执行它被假定要做的活动。 遗漏故障-进程遗漏故障 主要的进程遗漏故障是崩溃(crash)。指进程它停止了,并且不会再执行其程序步骤。其他进程当发现这个进程反复的不能响应调用消息的时候,可以检测到那样的崩溃。然而,这种崩溃检测方法依赖于timeouts的使用,在异步系统中,一个timeout仅能指示出进程不响应――他可能崩溃了也可能是很慢,或者消息可能还没有到达。 如果其他进程能确切地检测到进程已经崩溃,这样的进程崩溃称为“fail-stop”。如果进程使用timeouts来检测什么时候其他进程不能响应并且保证信件被传递,那么在同步系统中可以产生Fail-stop行为。 遗漏故障-通信遗漏故障 考虑通信原语send和receive。进程p通过在其outgoing消息缓冲区中插入消息m执行一个send,通信通道传送m到q的incoming消息缓冲区,进程q通过从其incoming消息缓冲区取m并传递它来执行一个receive。Outgoing和incoming消息缓冲区典型地由操作系统提供。 通信遗漏故障(续) 通信通道如果它不能把信件从p的outgoing 消息缓冲区传送到q的incoming消息缓冲区,则产生了一个遗漏故障。这就是我们所知道的“dropping messages”,并且这通常是由于在接收端或在介入的网关上缺乏缓冲空间,或者是由于网络传送错误(通过信件数据所携带的
文档评论(0)