分布式系统模型

分布式系统的特征

分布式系统是其组件分布在联网的计算机上,组件之间通过传递消息进行通信和动作协调的 系统。

 1.分布式体系结构模型

1.1.结构元素

1)通信实体

2)通信范型

3)角色和责任

  角色和责任在一个分布式系统中, 进程,或者说,对象、组件、服务,包括Web服务(为简单起见,我们在本节中使用术语“ 进程”)相互交互完成-一个有用的活动,例如支持一次聊天会话。 在
这样做的时候,进程扮演给定的角色,在建立所采用的整体体系结构时,这些角色是基本的。

客户-服务器:

这是讨论分布式系统时最常引用的体系结构。它是历史上最重要的体系结构,现在仍被广泛地使用。下图给出了一个简单的结构,其中,进程扮演服务器和客户的角色。特别是,
为了访问服务器管理的共享资源,客户进程可以与不同主机上的服务器进程交互。

扫描二维码关注公众号,回复: 11157034 查看本文章

对等体系结构:

  在这种体系结构中,涉及- -项任务或活动的所有进程扮演相同的角色,作为对等方进行协作交互,不区分客户和服务器或运行它们的计算机。在实践中,所有的参与进程运行相同的
程序并且相互之间提供相同的接口集合。虽然客户-服务器模型为数据和其他资源的共享提供了-一个直接和相对简单的方法,但客户-服务器模型的伸缩性比较差。将-个服务放在单个地址中意味着集
中化地提供服务和管理,它的伸縮性不会超过提供服务的计算机的能力和该计算机所在网络连接的带宽。
  针对这个问题,已经形成了一系列的放置策略(见下面关于“放置”的讨论),但它们都没有解决基本问题一如何将共享资源进行更广泛的分布,以便将访问资源带来的计算和通信负载分散
到大量的计算机和网络链接中。促使对等系统发展的主要观点是-一个服务的用户所拥有的网络和计算资源也能被投入使用以支持那个服务。这产生有益的结果:可用于运行服务的资源随用户数而
增加。

  最早的系统之一是共享数字 音乐文件的Napster应用程序。虽然它不是一个纯粹的对等体系结构( 而且由于其他非体系结构的原因而变得声名狼藉),但它验证了对
等系统的可行性,并使体系结构模型向多个有价值的方向发展。最近一个广 泛使用的实例是BitTorrent文件共享系统。
  下图说明了对等应用的形式。应用由大量运行在独立计算机上的对等进程组成,进程之间的通信模式完全依赖于对应用的需求。大量数据对象被共享,单个计算机只保存- -小部分应用数据库,访
问对象的存储、处理和通信负载被分布到多个计算机和网络链接中。每个对象在几个计算机中被复制,以便以后分散负载,并在某个计算机断链时仍能正常工作(这在对等系统针对的大型异构网络中是不

可避免的)。在众多计算机上放置对象并检索,同时维护这些对象的副本,这种应用需求使得对等体系结构本质上比客户-服务器体系结构要复杂得多。

4)放置

   最后要考虑的问题是诸如对象或服务这样的实体是怎样映射到底层的物理分布式基础设施上的,物理分布式基础设施由大量的机器组成,这些机器通过- ~个任意复杂的网络互联。从决定分布

式系统特性的角度而言,放置是关键的,这些特性大多数与性能相关,也包括其他特性如可靠性和安全性。从机器和机器内部进程的角度看,在哪里放置-一个给定客户或服务器的问题是需要仔细设计的。
放置需要考虑实体间的通信模式、给定机器的可靠性和它们当前的负载、不同机器之间的通信质量等。必须用有说服力的应用知识来确定放置,有些通用的指导方针可以用来获得一个优化的解决方案。因
此,我们主要关注下列放置策略,它们能显著地改变-一个给定设计的特征 :
●将服务映射到多个服务器  
●缓存:如web浏览器缓存、redis
●移动代码:如applet、activex
●移动代理:是一一个运行的程序(包括代码和数据),它从- -台计算机移动到网络上的另一台计算机,代表某人完成诸如信息搜集之类的任务,最后返回结果。其适用性比较有限。

 1.2结构模型

1)星型结构

  按照业务规则将相关业务部署在相应节点上。设计上应尽量将这种结构抽象为分层结构。

2)分层体系结构

  分层的概念是一个熟悉的概念,与抽象紧密相关。在分层方法中,一个复杂的系统被分成若千层,每层利用下层提供的服务。因此,一个给定的层提供-一个软件抽象,更高的层不清楚实现细
节,或不清楚在它下面的其他层。就分布式系统而言,这等同于把服务垂直组织成服务层。-一个分布式服务可由-一个或多个服务器进程提供,这些进程相互交互,并与客户进程交互,维护服务中的资源在系统范围内的一致视图。

3)瘦客户

  瘦客户分布式计算的趋势 是将复杂性从最终用户设备移向互联网服务。这点在向云计算(见第1章)发展的趋势中最明显,在上面讨论的层次化体系结构中也能看到。这个趋势导致了对瘦客户
概念的兴趣,它使得能以很少的对客户设备的假设或需求,获得对复杂网络化服务的访问。这种概念导致虚拟网络计算( Virtual Network Computing, VNC)的出现,虚拟网络计算已经取代了网络计算机,后者是以前的瘦客户解决方案的实现方法,它通过简单、廉价、完全依赖网络化服务的硬件设备,从远程文件服务器下载它们的操作系统和用户所需的应用软件。因为所有的应用数据和代码由一个文件服务器存储,所以,用户可以从一个网络计算机迁移到另一个。事实上,虚拟网络计算被证明是一个更灵活的解决方案,现在主宰着市场。

4)代理

  代理(proxy) 模式是分布式系统中经常出现的模式,其主要用于支持远程过程调用或远程方法调用的位置透明性。用这种方法,一个代理在本地地址空间中被创建,用于代表远程对象。
这个代理提供与远程对象-样的接口,程序员调用这个代理对象,因此无须了解交互的分布式特性。在RPC和RMI中,代理支持位置透明性的作用将在第5章做进- -步 的讨论。注意代理
也被用于封装其他的功能(诸如复制或缓存的放置策略等)。

5)中间件解决方案

功能类别如下图所示

 2.基础模型

2.1交互模型

本节讨论分布式系统中影响进程交互的两个重要因素:
●通信性能经常是一个限制特性。
●不可能维护-一个全局时间概念。

通信通道的性能    在我们的模型中, 通信通道在分布式系统中可用许多方法实现,例如,通过计算机网络上的流或简单消息传递来实现。计算机网络上的通信有下列与延迟(latency)、 带宽( band-width)和抖动( jttert)有关的性能特征: 
●从一个进程开始发送消息到另一个进程开始接收消息之间的间隔时间称为延迟。延迟包括:一第一串比特通过网络传递到目的地所花费的时间。例如,通过卫星链接传递消息的延迟是无
线电信号到达卫星并返回的时间。一访问网络的延迟,当网络负载很重时,延迟增长很快。例如,对以太网传送而言,发送站点要等待网络空闲。一操作系统通信服务在发送进程和接收进程上所花费的时间,这个时间会随操作系统当前的负载的变化而变化。
●计算机网络的带宽是指在给定时间内网络能传递的信息总量。当大量通信通道使用同一个网络时,它们就不得不共享可用的带宽。
●抖动是传递- -系列消息所花费的时间的变化值。抖动与多媒体数据有关。例如,如果音频数据的连续采样在不同的时间间隔内播放,那么声音将严重失真。

事件排序     在许多情况下, 我们有兴趣知道- -个进程中的一个事件(发送或接收一个消息)是发生在另-一个进程中的另-一个事件之前、之后或同时。尽管缺乏精确的时钟,但系统的执行仍能用事件和它们的顺序来描述。具体参考lamport的逻辑时钟概念。

交互模型的两个变体     在分布式系统中,很难对进程执行、消息传递或时钟漂移所花的时间设置时间限制。两种截然相反的观点提供了一对简单模型:第一个模型对时间有严格的假设,第二个模型对时间没有假设。
  同步分布式系统: Hadzilacos 和Toueg [1994] 定义了一个同步分布式系统,它满足下列约束:
●进程执行每一步 的时间有-一个上限和下限。
●通过通道传递的每个消息在一个已知的时间范围内接收到。
●每个进程有- -个本地时钟,它与实际时间的偏移率在一一个已知的范围内。
  对于分布式系统,建议给出合适的关于进程执行时间、消息延迟和时钟漂移率的上界和下界是可能的。但是达到实际值并对所选值提供保证是比较困难的。除非能保证上界和下界的值,否则任何基于所选值的设计都不可靠。但是,按同步系统构造算法,可以对算法在实际分布式系统的行为提供一些想法。例如,在同步系统中,可以使用超时来检测进程的故障。同步分布式系统是能够被构造出来的。所要求的是进程用已知的资源需求完成任务,这些资源需求保证有足够的处理器周期和网络能力;还有要为进程提供漂移率在- -定范围 内的时钟。

  异步分布式系统: 许多分布式系统,例如互联网,是非常有用的,但它们不具备同步系统的资格。

  因此我们需要另-一个模型。异步分布式系统是对下列因素没有限制的系统:
●进程执行速度一 例如,进程的- -步可能只花费亿万分之-秒,而进程的另-步要花费-一个世纪的时间,也就是说,每一步能花费任意长的时间。
●消息传递延迟一 例如,从进程A到进程B传递一个消息的时间可能快得可以忽略,也可能要花费几年时间。换句话说,消息可在任意长时间后接收到。
●时钟漂移率一 时钟漂移率可以是任意的。
  异步模型对执行的时间间隔没有任何假设。这正好与互联网一致,在互联网中,服务器或网络负载没有内在的约束,对像用FTP传输文件要花费多长时间也没有限制。有时电子邮件消息要花几天时间才能到达。下面的“ Pepperland协定”部分说明在异步分布式系统中达成协定的困难性。即使有这些假设,有些设计问题也能得到解决。例如,虽然Web并不总能在-一个合理的时间限制
内提供特定的响应,但浏览器的设计可以做到让用户在等待时做其他事情。对异步分布式系统有效的任何解决方案对同步系统同样有效。
  实际的分布式系统经常是异步的,因为进程需要共享处理器,而通信通道需要共享网络。例如,如果有太多特性未知的进程共享-一个处理器,那么任何一个进程的性能都不能保证。但是,有许多不能在异步系统中解决的设计问题,在使用时间的某些特征后就能解决。在最终期限之前传递多媒体数据流的每个元素就是这样一个问题。对这样的问题,可使用同步模型。

2.2故障模型

  在分布式系统中,进程和通信通道都有可能出故障,即它们可能偏离被认为是正确或所期望的行为。故障模型定义了故障可能发生的方式,以便理解故障所产生的影响。Hadzilacos 和Toueg [ 1994]提供了一-种分类法,用于区分进程故障和通信通道故障。这些故障将分别在下面的“ 遗漏故障”、“随机故障”和“时序故障”部分介绍。

  遗漏故障   遗漏故 障类错误指的是进程或通信通道不能完成它应该做的动作。
  进程遗漏故障:进程主要的遗漏故障是崩溃。当我们说进程崩溃了,意为进程停止了,将不再执行程序的任何步骤。能在故障面前存活的服务,如果假设该服务所依赖的服务能干净利落地崩溃,即进程仍能正确运行或者停止运行,那么它的设计能被简化。其他进程通过下列事实能检测到这种进程崩溃:这个进程- - 再地不能对调用消息进行应答。然而,这种崩溃检测的方法依赖超时的使用,即进程用一段固定时间等待某个事件的发生。在异步系统中,超时只能表明进程没有响应一它 可能是崩溃了,也可能是执行速度慢,或者是消息还没有到达。

  如果其他进程能确切检测到进程已经崩溃,那么这个进程崩溃称为故障-停止。在同步系统中,如果确保消息已被传递,而其他进程又没有响应时,进程使用超时来检测,那么就会产生故障-停止行为。例如,对于进程p和q,如果设计q应答来自p的消息,而且进程p在按p本地时钟度量的一个最大时间范围内没有收到进程q的应答,那么进程p可以得出结论:进程q出现了故障。下面的“故

障检测”和“面对通信故障时达成协定的不可能性”部分说明在异步系统中检测故障的困难以及在故障面前达成协定的困难。

   随机故障    术语随机故障或拜占庭故障用于描述可能出现的最坏的故障,此时可能发生任何类型的错误。例如,一个进程可能在数据项中设置了错误的值,或为响应-个调用返回-个错误的值。

进程的随机故障是指进程随机地省略要做的处理步骤或执行一些不需要的处理步骤。进程的随机故障不能通过查看进程是否应答调用来检测,因为它可能随机地遗漏应答。

  通信通道也会出现随机故障。例如,消息内容可能被损坏或者传递不存在的消息,也可能多次传递实际的消息。通信通道的随机故障很少,因为通信软件能识别这类故障并拒绝出错的消息。例如,可用校验和来检测损坏的消息,消息序号可用于检测不存在和重复的消息。

  时序故障    时序故障适 用于同步分布式系统。在这样的系统中,对进程执行时间、消息传递时间和时钟漂移率均有限制。时序故障见如下图列表。这些故障中的任何-个均可导致在指定时间间隔内对客户没有响应。

  在异步分布式系统中,一个负载过重的服务器的响应时间可能很长,但我们不能说它有时序故障,因为它不提供任何保证。
  实时操作系统是以提供时序保证为目的而设计的,但这种系统在设计上很复杂的,会要求冗余的硬件。大多数通用的操作系统(如UNIX)不能满足实时约束。
  时序与有音频和视频通道的多媒体计算机的关系尤为密切。视频信息要求传输海量的数据。若要在传递视频信息时不出现时序故障,那么就要对操作系统和通信系统提出特殊的要求。

  故障屏蔽    分布式系统中 的每个组件通常是基于其他-一组组件构造的。利用存在故障的组件构造可靠的服务是可能的。例如,保存有数据副本的多个服务器在其中-一个服务器崩溃时能继续提供服务。了解组件的故障特征有利于在设计新服务时屏蔽它所依赖的组件的故障。一个服务通过隐藏故障或者将故障转换成- -个更能接受的故障类型来屏蔽故障。对于后者,我们给出一一个例子,校验和用于屏蔽.损坏的消息,它有效地将随机故障转化为遗漏故障。通过使用将不能到达目的地的消息重传的协议可以隐藏遗漏故障。利用复制进行故障屏蔽的方法。甚至进程崩溃也可以屏蔽,即通过替换崩溃进程并根据原进程存储在磁盘上的信息恢复内存来实现。.
  一对一通信的可靠性    虽然基本的通信通道 可能出现前面描述的遗漏故障,但用它来构造一一个能屏蔽某些故障的通信服务是可能的。
  术语可靠通信可从下列有效性和完整性的角度来定义:
  有效性:外发消息缓冲区中的任何消息最终能传递到接收消息缓冲区。
  完整性:接收到的消息与发送的消息- -致,没有消息被传递两次。
  对完整性的威胁来自两个方面:
  ●任何重发消息但不拒绝到达两次的消息的协议。要检测消息是否到达了两次,可以在协议中给消息附加序号。
  ●心怀恶意的用户,他们可能插入伪造的消息、重放旧的消息或篡改消息。在面对这种攻击时为维护完整性要采取相应的安全措施。

2.3 安全模型

  通过保证进程和用于进程交互的通道的安全以及保护所封装的对象免遭未授权访问可实现分布式系统的安全。

  保护对象  如图给出了代表- -些用户管理-组对象的-个服务器。用户运行客户程序,由客户程序向服务器发送调用以完成在对象上的操作。服务器完成每个调用指定的操作并将结果发给客户。

  对象可由不同的用户按不同的方式使用。例如,有些对象持有用户的私有数据,如他们的邮箱,而其他对象可能持有共享数据,如Web页面。为了解决这样的问题,访问权限指定了允许谁执行-一个对象的操作一-例如, 允许谁读或写它的状态。
  这样,我们必须在我们的模型中包括作为访问权限受益人的用户。我们将每个调用和每个结果均与对应的授权方相关联。这样的- -个授权方称为-一个主体( principal)。-个主体可以是一个用户或进程。在我们的图示中,调用来自用户,结果来自服务器。

  服务器负责验证每个调用的主体的身份,检查它们是否有足够的访问权限在所调用的某个对象上完成所请求的操作,如果没有权限就拒绝它们的请求。客户可以检查服务器的主体身份以确保结果来自所请求的服务器。

  保护进程和它们的交互  进程通过发送消 息进行交互。消息易于受到攻击,因为它们所使用的网络和通信服务是开放的,以使得任- -对进程可以进行交互。服务器和对等进程暴露它们的接口,使得任何其他进程能给它们发送调用。  

一个分析安全威胁的模型

  敌人  为了 给安全威胁建模,我们假定敌人(有时也称为对手)能给任何进程发送任何消息,并读取或复制- -对进程之间的任何消息,如图2- 18所示。这种攻击能很简单地实现,它利用连接在网上的计算机运行-一个程序读取那些发送给网络上其他计算机的网络消息,或是运行一个程序生成假的服务请求消息并声称来自授权的用户。攻击可能来自合法连接到网络的计算机或以非授权方式连接到网络的计算机。

  来自一个潜在敌人的威胁包括对进程的威胁和对通信通道的威胁。
  对进程的威胁:在分布式系统中,一个用于处理到达的请求的进程可以接收来自其他进程的消息,但它未必能确定发送方的身份。通信协议( 如IP)确实在每个消息中包括了源计算机的地址,但对一个敌人而言,用一个假的源地址生成-个消息并不困难。缺乏消息源的可靠的知识对服务器和客户的正确工作而言是-一个威胁,具体解释如下:

●服务器:因为服务器能接收来自许多不同客户的调用,所以它未必能确定进行调用的主体的身份。即使服务器要求在每个调用中加入主体的身份,敌人也可能用假的身份生成-一个调用。 在
没有关于发送方身份的可靠知识时,服务器不能断定应执行操作还是拒绝执行操作。例如,邮件服务器不知道从指定邮箱中请求-一个邮件的用户是否有权限这样做,或者它是否为来自一个
敌人的请求。
●客户:当客户接收到服务器的调用结果时,它未必能区分结果消息来自预期的服务器还是来自一个“哄骗”邮件服务器的敌人。因此,客户可能接收到-一个与原始调用无关的结果,如一
个假的邮件(不在用户邮箱中的邮件)。
  对通信通道的威胁: 一个敌人在网络和网关上行进时能复制、改变或插人消息。当信息在网络上传递时,这种攻击会对信息的私密性和完整性构成威胁,对系统的完整性也会构成威胁。例如,包含用户邮件的结果消息可能泄露给另-一个用户或者可能被改变成完全不同的东西。

另一种形式的攻击是试图保存消息的拷贝并在以后重放这个消息,这使得反复重用同- -消息成为可能。例如,有些人通过重发请求从一个银行账户转账到另-一个银行账户的调用消息而受益。

利用安全通道可解除这些威胁,安全通道是基于密码学和认证的

详细内容见下面的描述。
解除安全威胁~下 面将介绍安全系统所基于的主要技术。

密码学和共享秘密:假设- -对进程(例如某个客户和某个服务器)共享-一个秘密, 即它们两个知道秘密但分布式系统中的其他进程不知道这个秘密。如果由- -对进程交换的消息包括证明发送方共享
秘密的信息,那么接收方就能确认发送方是- -对进程中的另一个进程。当然,必须小心以确保共享的秘密不泄露给敌人。
  密码学是保证消息安全的科学,加密是将消息编码以隐藏其内容的过程。现代密码学基于使用密钥(很难猜测的大数)的加密算法来传输数据,这些数据只能用相应的解密密钥恢复。
  认证:共享秘密和加密的使用为消息的认证(证明由发送方提供的身份)奠定了基础。基本的认证技术是在消息中包含加密部分,该部分中包含足够的消息内容以保证它的真实性。对文件服务器的一个读取部分文件的请求,其认证部分可能包括请求的主体身份的表示、文件的标识、请求的日期和时间,所有内容都用一个在文件服务器和请求的进程之间共享的密钥加密。服务器能解密这个请求并检查它是否与请求中指定的未加密细节相对应。
  安全通道:加密和认证用于构造安全通道,安全通道作为已有的通信服务层之上的服务层。安全通道是连接一对进程的通信通道,每个进程代表-个主体行事,如图2- 19所示。一个安全通道有下列特性:
●每个进程确切知道其他正在执行的进程所代表的主体身份。因此,如果客户和服务器通过安全通道通信,那么服务器要知道发起调用的主体身份,并能在执行操作之前检查它们的访向权限。
这使得服务器能正确地保护它的对象,以便客户相信它是从真实的服务器上接收到的结果。
●安全通道确保在其上传送的数据的私密性和完整性( 防止篡改)。
●每个消息包括- 一个物理的或逻辑的时间戳以防消息被重放或重排序。

猜你喜欢

转载自www.cnblogs.com/handwrit2000/p/12808544.html
今日推荐