1.2.2 分布式系统

分布式系统是相对于集中式系统而言的。个人计算机性能的提高、使用的普及使得数据的存储、计算都可以由本地主机完成,促进了分布式系统的发展。分布式系统中的数据存储、任务的处理分布在网络中不同的机器上,每台主机都是一个独立的系统,联网的目的是为了获得更多的资源,丰富的服务。分布式系统由许多台不同的机器组成,每台主机都有自己的数据库、中央处理器、终端等,它们在物理上是分散的,在逻辑上属于同一系统。它具有如下的特点:

· 高度的可靠性。数据分散存储在网络中不同的主机上,系统中存在数据冗余,当一台主机发生故障时,可以使用另一台主机的备份。

· 均衡负载。每台主机可以缓存本地最常用的数据,不需要频繁地访问服务器,减轻了服务器的负担,减少了网络流量。服务器也可以对任务进行分配和优化,克服集中系统中央计算机资源紧张的瓶颈。

· 满足不同的需要。用户可以根据自己的需要在他自己的主机上安装不同的操作系统、软件,使用不同的服务,不再像集中系统那样受限于一台中央计算机的功能。

分布式系统可以进一步分为两类:对等网络模型(Peer-to-Peer Model)和客户/服务器模型(Client-Server Model)。

1.2.2.1 对等网络模型

对等网络也称为点对点或P2P网络。对等网络中每台主机处于同等的地位,既作为客户端,又充当其他主机的服务器。每台主机都存储一些共享的数据和资源,为其他主机提供服务。对等网络是分布式系统的成功扩展,它把传统服务器的负担分散到每台主机,每台主机都承担一些数据存储和计算任务,能充分利用网络的空闲资源,加入网络的主机越多,对整个网络资源的贡献越大,不仅提高了服务质量,而且能为更多的用户服务。对等网络分为如下四种:

· 无结构网络。所有主机都是同等的作用,功能相同,没有中心服务器,每台主机兼作客户机和服务器。主机使用查询分组搜索需要的资源,查询分组在网络中像水波一样传输,需要设置适当的TTL,否则容易造成消息泛滥。

· 有结构网络。结构化是为了快速地搜索到需要的网络资源,是一种在逻辑上可以结构化查询的方法,不是物理连接的改变。路由算法采用分布式哈希表(Distributed Hash Table)将资源关键字映射到所存放结点的地址上,得到一个资源映射表,然后将表存储到网络中的每一个结点中去。当用户使用相应的资源时,它根据资源关键字在映射表中找到包含该资源的结点地址,然后用户与该对应的结点联系得到需要的资源。

· 混合式网络。在分布式的基础上,将用户结点按能力进行分类,让某些结点担任特殊的任务。搜索结点:从子结点中搜索文件列表,处理搜索请求;索引结点:维护网络结构,保存搜索结点信息;用户结点:从索引结点得到相邻搜索结点地址。

· 集中式网络。有一个中心的目录服务器,记录了索引信息,并应答对这些信息的查询。登录及信息查询都首先与中心服务器联系,查询到结果后,就直接与存放内容的主机建立连接,传输内容不需要经过中心服务器,直接在两台主机之间进行。

1.2.2.2 客户/服务器模型

网络软件广泛采用客户/服务器模型。服务器存放数据、配置信息,被动地等待,当其他主机向它发出请求时,它提供客户所需要的服务。客户主动与服务器联系,请求所需要的服务,如获得数据、文件等。服务器有很强的运算能力、丰富的资源,而客户的运算能力、资源比较有限。客户/服务器模式实现了网络中各种资源的共享,这也是联网的主要目的。

客户/服务器模型又细分为:平坦模型和层次模型。平坦模型中所有的客户都与一个服务器通信,如图1.2所示;层次模型中一个等级的主机是低一级主机的服务器,同时也作为高一级主机的客户端,如图1.3所示。

图1.2 客户/服务器平坦模型

图1.3 客户/服务器层次模型

客户/服务器模型中把少数计算机设计成服务器,它们为大量的客户提供服务。服务器是性能很好的计算机,有大量的存储空间、快速的网络连接、强大的计算能力,它共享自己的资源,是内容和服务的提供者。客户机通常是普通的计算机或者移动设备等,它从服务器请求内容或要求服务器执行一些任务。

术语客户/服务器也常用来指计算机上运行的应用程序,如图1.4所示,它们是一个通信的两个组成部分,将网络应用程序分成匹配、互补的两部分:客户程序和服务器程序。客户程序运行在客户主机上,它主动与服务器建立连接,并得到服务器提供的服务或信息;服务器程序运行在服务器主机上,它对客户的请求做出响应,为客户提供所需要的服务。大部分情况下,客户和服务器是两个独立的程序,通信是在客户与服务器间进行的。但我们也可以设计为能同时完成这两种功能的程序,如在域名系统的层次结构模型中,当域名服务器不能完成客户的请求时,它将充当客户程序,向另一个服务器请求信息。

图1.4 客户/服务器模型

客户/服务器描述了互相协作应用程序之间的关系,Web浏览、E-mail交换、文件传输和数据库访问等都建立在该模型基础上。如:Web浏览器是用户计算机上运行的客户端程序,它能够访问保存在Web服务器上的信息;E-mail应用一方发送邮件,先把邮件保存到服务器上,对方接收邮件也要先与邮件服务器建立连接,再下载邮件。客户/服务器模型是互联网上程序设计的中心思想,许多商业应用都使用客户/服务器模型,重要的应用层协议也是基于该模型设计的,如HTTP、FTP、DNS、Telnet等。客户端软件向服务器发送请求,服务器收到请求后处理它们,并把请求的信息返回给客户程序,这一概念被应用到许多不同的程序中,但它的架构基本都是一样的。客户/服务器模型有下面的特点:

· 容易维护。客户/服务器架构能够把计算机系统的作用和责任布置到几台独立的计算机上,它们通过网络互相连接,这样在替换、升级或维护服务器时,客户端不受任何影响。

· 安全控制。所有的数据都保存在服务器上,服务器能够更好地控制资源和访问授权,保证只有合法的用户才能使用相关的信息。

· 便于更新。服务器统一存储数据,管理员可以方便地更新数据。在对等网络架构中,数据要在网络中的每一个结点更新,不但耗时而且容易出错。

· 缺乏健壮性。随着客户同时请求数据的增加,服务器负载会加重,导致服务质量下降。如果一台关键的服务器发生了故障,将无法处理客户的请求。

客户/服务器是分布式系统中使用最广泛的网络结构模型,也是世界上最大的互联网采用的基本结构。客户从服务器请求服务或内容,通信中它们要遵守相同的协议,在互联网中就是TCP/IP协议,客户/服务器模型是大多数网络通信的基础。图1.4显示了客户与服务器使用TCP协议进行通信的典型架构。