跳转到内容

互联网简史/第5章:客户端-服务器

来自Wikibooks,开放世界中的开放书籍

客户端-服务器范式/简介

[编辑 | 编辑源代码]

客户端-服务器模型定义为两个相互通信的计算机程序之间的关系。客户端通过向服务器发送服务请求来发起通信。它们通常是安装了网络软件应用程序的个人计算机。移动设备也可以充当客户端。服务器通常是存储文件和数据库的设备,包括网站等复杂的应用程序。与客户端相比,它们拥有更强大的中央处理器、更大的磁盘驱动器和更多的内存。服务器将通过与客户端共享资源来满足客户端的请求,而客户端本身没有任何处理能力。这种客户端-服务器模型通常发生在计算机网络上。但是,它也可以发生在单个计算机内部。

客户端-服务器模型可以在电子邮件交换、网页访问和数据库访问等功能中找到。Web浏览器实际上就是一个客户端。它在本地运行软件,处理从Web服务器接收到的信息。在典型的客户端-服务器模型中,一个服务器被激活并等待客户端请求。多个客户端程序共享同一个服务器程序的服务。它们通常是更大应用程序的一部分。互联网的主要程序TCP/IP(传输控制协议/互联网协议)也是基于客户端-服务器模型构建的。TCP/IP允许用户对FTP(文件传输协议)服务器发出客户端请求。[1]

客户端-服务器架构通过提供查询响应来帮助减少网络流量。它不提供完整的文件传输。客户端-服务器架构有两种类型,分别是两层架构和三层架构。对于两层客户端-服务器架构,用户界面存储在客户端,而数据存储在服务器。信息处理在用户界面环境和数据管理服务器环境之间分离。在三层客户端-服务器架构中,中间件用于用户界面环境和数据管理服务器环境之间。这有助于克服两层客户端-服务器架构的缺点。当用户数量众多时,它可以提高性能。与两层方法相比,它也提高了灵活性。但是,它的开发环境比两层应用程序的开发更难使用。[2]

客户端和服务器程序/架构

[编辑 | 编辑源代码]

客户端程序是在一个端系统(主机)上运行的程序,它请求并接收来自另一个端系统上运行的服务器程序的服务。客户端-服务器模型包括Web、电子邮件、文件传输远程登录以及许多其他流行的应用程序。客户端-服务器互联网应用程序被定义为分布式应用程序,因为客户端程序通常在一个计算机上运行,而服务器程序在另一台计算机上运行。

客户端程序和服务器程序通过在互联网上传递消息相互交互。在这个抽象级别上,互联网的路由器、链路和其他基础设施充当黑盒,在互联网应用程序的分布式组件之间传输消息。

在客户端-服务器架构中,服务器是始终在线的主机,而客户端主机可以是始终在线或有时在线。Web是始终在线主机的经典示例。在客户端-服务器架构中,客户端不会直接相互通信。例如,两个浏览器不会直接通信。此外,由于服务器是始终在线的主机,因此客户端可以通过向服务器的地址发送数据包随时联系服务器。

单个服务器主机无法满足来自所有客户端的请求;如果只有一个或两个服务器处理所有请求,服务器将很快不堪重负。为了解决这个问题,数据密集型通常用于在服务器-客户端架构中创建功能强大的虚拟服务器(基于客户端-服务器的应用程序通常是基础设施密集型的,这意味着它们需要服务提供商购买、安装和维护服务器群)。服务提供商需要为互连和发送和接收数据以及基础设施密集型支付成本。例如,像Facebook这样的流行服务是基础设施密集型的,并且提供成本很高。

但是,并非所有互联网都由纯客户端程序与纯服务器程序交互组成。现代网络应用程序中使用了两种主要的架构范式,即客户端-服务器和对等 (P2P)。与客户端-服务器不同,P2P 是间歇连接的主机对之间的直接通信。一些示例包括互联网通话(例如 Skype)、文件分发(例如 BitTorrent)、文件共享(例如 eMule)和 IPTV(例如 PPLive)[3]。[3]

客户端/服务器演变

[编辑 | 编辑源代码]

很久以前,客户端-服务器计算只是使用大型机并连接到哑终端。多年来,个人计算机开始发展并取代了这些终端,但处理仍然在大型机上进行。随着计算机技术的进步,处理需求开始在个人计算机和大型机之间分配。

术语“客户端-服务器”指的是由两部分组成的软件架构模型,即客户端系统和服务器系统。这两个组件可以交互并形成连接多个用户的网络。使用这项技术,PC能够在网络上相互通信。这些网络基于文件共享架构,其中PC从相应的文件服务器下载文件,并且应用程序使用接收到的数据在本地运行。但是,共享使用和要传输的数据量必须很低才能使系统正常运行。

随着网络的增长,文件共享架构的局限性成为客户端-服务器系统中的障碍。这个问题通过用数据库服务器替换文件服务器来解决。数据库服务器不是将文件传输并保存到客户端,而是执行数据请求并将结果集返回给客户端。结果,这种架构减少了网络流量,允许多个用户同时更新数据。

通常使用结构化查询语言 (SQL) 或远程过程调用 (RPC) 在客户端和服务器之间进行通信。[4] 客户端-服务器架构有几种类型。其中一种架构是两层架构,其中客户端直接连接到服务器。这种架构具有良好的应用程序开发速度,并且在用户群体工作量较小的同构环境中运行良好。这种架构存在的问题是这种模型中应用程序逻辑和处理的分布。如果应用程序逻辑分布到几十个客户端系统,那么应用程序维护将非常困难。为了克服两层架构的局限性,引入了三层架构。通过引入中间层,客户端仅连接到应用程序服务器,而不是直接连接到数据服务器。通过这种方式,消除了维护连接的负担。数据库服务器能够很好地管理存储和检索数据。因此,应用程序逻辑和处理可以在任何应用程序中系统地处理。为了增强三层架构,当中间层提供与各种类型服务的连接、将它们集成和耦合到客户端以及相互之间时,可以将其扩展到 N 层。例如,将Web服务器添加到三层架构以成为四层架构,其中Web服务器处理应用程序服务器和客户端之间的连接。因此,可以同时处理更多用户。[5]

服务器群

[编辑 | 编辑源代码]

服务器群或服务器集群是一组作为服务器的计算机,它们保存在一个位置。当对计算机服务器的需求增加时,仅使用一台服务器可能难以或不可能处理。因此,使用了服务器群。使用服务器群,工作负载分布在多个服务器组件之间,从而提供更快的计算过程。服务器群最常用于学术/研究型机构或大型公司。但是,由于计算机和公司已变得更加主流,因此现在无论公司规模或需求如何,许多公司都在使用服务器群。[6]

服务器群执行服务,例如提供集中式访问控制、文件访问、打印机共享和工作站用户的备份。[7] 服务器可以具有单独的操作系统或共享的操作系统,并且还可以设置为在存在许多服务器请求时提供负载均衡。

在服务器场中,通常会有一个主服务器和一个备份服务器。这两个服务器可能会被分配执行相同的任务。因此,如果一台服务器发生故障,另一台服务器可以充当备份。这样做是为了在发生问题时维护服务器功能并防止服务器离线。通常,服务器场会有网络交换机和路由器,这些设备允许服务器场的不同部分进行通信。所有这些计算机、路由器、电源和其他组件通常都安装在服务器机房的 19 英寸机架上。[8]

服务器场的性能并非由处理器的性能来评估。服务器场的性能实际上受到服务器机房冷却系统和电费的限制。由于其巨大的电力消耗,服务器场的参数设计通常基于每瓦性能。对于那些 24/7 运行的系统,节能功能更为重要,以确保系统能够根据需求关闭某些部分。这样,在系统节省更多电力的同时,服务不会中断。[9]

客户端-服务器模型有很多示例。在本章中,我们将讨论界面、互联网、银行账户和数据处理系统。

首先,我们将讨论界面。界面是一个组件之间相互交互的概念。然后,组件能够独立运行,同时使用接口通过输入/输出系统和关联的协议与其他组件通信。[10]

互联网也是客户端-服务器的一个示例。在互联网上,我们是客户端,请求由我们发送到服务器。互联网(即服务器)将搜索主题,然后向我们提供选项。因此,互联网,也称为万维网,实际上是响应各种类型客户端的大量服务器集合。Web 服务器上可用的信息可以被许多不同的客户端访问。[11]

使用网上银行系统检查银行账户余额的过程是客户端-服务器程序的另一个示例。计算机中的客户端程序将向银行的服务器发送服务请求。该程序还可以将请求转发到其自己的数据库客户端程序,该程序向另一家银行的服务器数据库发送请求以获取信息。然后将信息发送回银行的数据客户端,并返回到计算机的客户端程序,该程序将账户余额显示给用户。[12]

数据处理是另一个实现客户端-服务器模型的应用程序。从另一台计算机复制文件时,客户端用于访问服务器上的文件。换句话说,服务器向客户端提供数据。

参考文献

[编辑 | 编辑源代码]
  1. Sullivan, J. (2000)。定义::客户端/服务器。在 TechTarget 中。于 2011 年 11 月 10 日从 http://searchnetworking.techtarget.com/definition/client-server 检索
  2. 客户端-服务器体系结构的类型?(2011 年 11 月 10 日)。在 Answer.com 中。于 2011 年 11 月 10 日从 http://wiki.answers.com/Q/Types_of_client_server_architecture 检索
  3. Ross, K. (2010)。网络:自顶向下的方法,第五版
  4. Andykramek(2008 年 9 月 29 日)。客户端-服务器体系结构简介。于 2011 年 11 月 15 日从 http://weblogs.foxite.com/andykramek/archive/2008/09/29/6935.aspx 检索
  5. David Raney(2009)。客户端/服务器计算的演变。于 2011 年 11 月 15 日从 http://cis.cuyamaca.net/draney/214/web_server/client.htm 检索
  6. 服务器场(2011 年 11 月 23 日)。在 Server Farm Org 中。于 2011 年 11 月 23 日从 http://serverfarm.org/ 检索
  7. 定义::服务器场(2011 年 11 月 23 日)。在 TechTarget 中。于 2011 年 11 月 23 日从 http://searchcio-midmarket.techtarget.com/definition/server-farm 检索
  8. 什么是服务器场?(2011 年 11 月 23 日)。在 WiseGeek 中。于 2011 年 11 月 23 日从 http://www.wisegeek.com/what-is-a-server-farm.htm 检索
  9. 服务器场(2011 年 11 月 23 日)。在维基百科,自由的百科全书中。于 2011 年 11 月 23 日从 http://en.wikipedia.org/wiki/Server_farm 检索
  10. Mitchell, B. 客户端(2011)服务器模型::什么是客户端-服务器网络技术。在 About.com 中。于 2011 年 11 月 23 日从 http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm 检索
  11. Greer, J. D. (1995-1996) 客户端/服务器、互联网和 WWW。在 Robelle Solutions Technology Inc 中。于 2011 年 11 月 23 日从 http://www.robelle.com/www-paper/paper.html 检索
  12. 客户端-服务器模型(2011 年 11 月 10 日)。在维基百科,自由的百科全书中。于 2011 年 11 月 10 日从 http://en.wikipedia.org/wiki/Client%E2%80%93server_model 检索
华夏公益教科书