首页 理论教育Server与Peer-to-Peer系统深度比较

Server与Peer-to-Peer系统深度比较

【摘要】:本节将讨论两种典型的分布式系统,即Client/Server(C/S)系统与Peer-to-Peer系统。理论上,可以在一台计算机上实现Client/Server结构,但真正有意义的是,基于计算机网络在不同的计算机上实现Client/Server。在Client/Server系统中,服务器负责完成绝大多数数据管理的任务。图2.9Client/Server数据库系统体系结构有许多种类繁多的C/S体系结构。Client/Server结构的主要特点是客户程序和服务器程序互相关联,是一个完整应用的组成部分。

本节将讨论两种典型的分布式系统,即Client/Server(C/S)系统与Peer-to-Peer(P2P)系统。

1.Client/Server系统

什么是Client/Server(C/S)系统?

按照http://www.whatis.com的定义[3]:Client/Server描述了两个计算机程序之间的关系,其中一个程序(即Client)对另外一个程序(即Server)提出服务请求,后者则满足前者的请求。理论上,可以在一台计算机上实现Client/Server结构,但真正有意义的是,基于计算机网络在不同的计算机上实现Client/Server。在计算机网络里,Client/Server模型提供了一种便捷的方法来互联有效地分布在不同地点上的程序。

通常,在C/S模型里会激活一个服务器,一般称为守护神(daemon)。服务器等待客户端的请求,为请求提供服务。典型情况下,多个客户程序共享一个公共服务器程序的服务。客户程序和服务器程序是更大程序的一部分。

基于Client/Server结构的数据库管理系统进入计算环境,应该始于20世纪80年代末/90年代初,从而对数据库管理技术和计算技术造成了很大冲击。其基本思路也很简单,把需要提供的功能区分为两类:服务器功能与客户端功能。这样就提供了一个两级架构,让它容易适应现代数据库管理系统的复杂性和分布的复杂性。

在Client/Server系统中,服务器负责完成绝大多数数据管理的任务。所有的查询处理、事务管理和存储管理都交给服务器来完成。对客户端来说,除了应用和用户接口,它还有一个客户端模块负责管理客户端缓存的数据,有时还要负责管理在本地缓存的事务封锁。其实,把用户查询的一致性检查放在客户端也是可以的,但是这种手段不常用,因为这样会要求系统的目录复制在每一个客户端上,让大家都有副本,这是不合算的。

图2.9 Client/Server数据库系统体系结构

有许多种类繁多的C/S体系结构。最简单的系统是只有一个服务器,这个服务器可为多个客户端服务,我们称这样的系统为多客户端-单服务器系统。从数据管理的角度看,这与集中式数据库系统差别不大。但是,有一个很大区别是事务管理和缓冲存储的管理。复杂的是多服务器系统,也称多客户端-多服务器系统。这里可以有两种不同的管理策略,每个客户端管理与适当服务器的连接,或者每个客户端只认识自己的“home Server”。

图2.9是一个Client/Server数据库系统体系结构。这个系统主要由两部分构成:客户端(Client)和服务器(Server)。我们把在这两端运行的数据库管理系统软件分别称为客户端DBMS和服务器DBMS。客户端将用户请求(SQL语言形态)递交给服务器,服务器获得结果后将结果返回给客户端。值得注意的是,尽管我们把这两端的数据管理软件都称为DBMS,但是它们在功能上还是有很大区别的,主要工作由服务器承担,所以它上面的数据管理软件要复杂得多。由于要在客户端和服务器通信,所以必须为它们配备通信软件。

Client/Server结构的主要特点是客户程序和服务器程序互相关联,是一个完整应用的组成部分。

2.Peer-to-Peer系统

Peer-to-Peer称为对等,Peer-to-Peer计算则称为对等计算。随着Internet的发展,对等计算环境越来越普及,越来越受重视。Peer-to-Peer的分布式系统大量出现。[4]

Peer-to-Peer首先是一个通信模型,每一方都具有相同的能力,且各自都能启动通信会话。[5]Peer-to-Peer网络是一种网络结构,其中,每个工作站有等价的能力和责任。

在Internet里,Peer-to-Peer指的是一种瞬时的Internet网络,允许一组计算机用户使用相同的计算机程序互联,并直接访问对方硬盘上的文件。这类程序的例子如Napster[6]和Gnutella[7]。(https://www.chuimin.cn)

基于网络和应用,P2P系统可分为如下几种类别。

1)协同计算

协同计算(collaborative computing)也称分布计算,目的是利用网络上计算机的空闲或不用的处理功能和/或磁盘空间。协同计算在生物医学中有广泛的应用,因为那里需要海量计算。

2)即时消息

即时消息(instant messaging,IM)是最常用的P2P网络软件应用,如MSN Messenger或AOL Instant Messenger。

3)亲缘社会

亲缘社会(affinity communities)是指P2P网络的一个群组,能满足文件共享。

下面讨论与P2P相关的一些问题。

●P2P文件共享系统中,共享客户端是如何工作的。

如果计算机连接在Internet上,一旦用户下载和安装了P2P客户端,就可以启动这个程序,并在中心索引服务器上进行登录。这个中心索引服务器可为所有目前连接到该服务器的在线用户建立索引,但这个中心索引服务器上不存放被下载的任何文件。P2P客户端包含搜索特定文件的范围。这个程序用于查询索引服务器,寻找其他与查找文件连接的用户。若找到,就告诉用户是在哪里找到所请求的文件。然后,用户可以与存放该文件的主机建立联系,如果连接成功,就可以下载这个文件。下载完成后就把连接断开。

第二种P2P模型里没有中心索引服务器。P2P软件直接在Internet上通过使用统一软件来查找其他用户,通报自己的出现来构造出一个大型的网络。

●P2P安全因素。

使用P2P体系结构,大家最关心的是网络安全问题。安全源自其体系结构本身。解决办法是在有效范围内确定一种严格的使用策略。另外提供一种严格的监管策略。

上面讨论了C/S和P2P两种极端形态分布式数据库系统的情况,但这不是我们主要讨论的形态。我们讨论的是一般情况,某种程度上,一个普适的分布式数据库系统是C/S和P2P的混合形态,下面主要聚焦在普适形态上。