主從式架構
在计算机科学中,客户机-服务器是由客户机系统和服务器系统两部分组成的软件结构模型,两者通过计算机网络或在同一台计算机上进行通信。客户机-服务器应用程序是由客户机和服务器软件组成的分布式系统。客户机服务器应用程序提供了一种更好的分担工作负载的方式.客户机进程总是发起与服务器的连接,而服务器进程总是等待任何客户机的请求。
当客户端进程和服务器进程都运行在同一台计算机上时,这称为单座设置。
另一种相关的软件架构被称为对等,因为每台主机或应用实例可以同时充当客户机和服务器(不同于客户机-服务器模式的集中式服务器),而且每台主机或应用实例的责任和地位相当。点对点架构通常使用缩写P2P。
客户机与服务器的关系描述了客户机之间的关系,以及客户机如何向服务器提出服务请求,服务器如何接受这些请求,处理这些请求,并将请求的信息返回给客户机。客户端和服务器之间的交互关系通常使用序列图来描述。序列图在统一建模语言中是标准化的。
客户端-服务器和P2P架构在今天都得到了广泛的应用。
客户机-服务器软件架构的基本类型只采用两类主机:客户机和服务器。这种类型的架构有时被称为两层架构。两层架构意味着客户机作为一层,服务器进程作为另一层。
客户机-服务器软件结构已经成为网络计算的基本模型之一。许多类型的应用程序都是采用客户机-服务器模式编写的。标准的网络功能,如E-mail交换、Web访问和数据库访问等,都是基于客户机-服务器模型。例如,网络浏览器是用户计算机上的客户端程序,可以访问世界上任何网络服务器上的信息。
一个基于服务器的网络。
一个基于点对点的网络。
服务器特性
- 总是等待其中一个客户的请求。
- 服务于客户的请求,然后用请求的数据回复客户。
- 服务器可以与其他服务器进行通信,以便为客户请求提供服务。
- 如果需要额外的信息来处理请求(或实现安全),服务器可能会在处理请求之前向客户端请求额外的数据(密码)。
- 终端用户通常不直接与服务器交互,而是使用客户端。
优势
- 在大多数情况下,客户机-服务器架构使计算系统的角色和责任的恶化分布在几台独立的计算机中,而这些计算机只有通过网络才能相互了解,所以这种模式的一个优点是更容易维护。例如,可以对服务器进行更换、维修、升级甚至搬迁,而其客户机既不知道也不受这种变化的影响。这种不受变化影响的独立性也被称为封装。
- 所有的数据都存储在服务器上,服务器一般比大多数客户端有更好的安全控制。服务器可以更好地控制访问和资源,以保证只有那些具有适当权限的客户才可以访问和更改数据。
- 由于数据存储是集中式的,因此对管理员来说,数据的更新要比在P2P架构下容易得多。在P2P架构下,数据更新可能需要分发并应用于网络中的每个"对等体",这既耗时又容易出错,因为对等体可能有数千甚至数百万。
- 许多先进的客户机-服务器技术已经可以使用,这些技术的设计是为了确保安全、用户友好的界面和易用性。
- 它可以与多个不同规格的客户端配合使用。
缺点
- 网络流量阻塞是客户机-服务器模式的相关问题之一。当同时向某一服务器发出的客户端请求数量增加时,服务器就会出现超载。对比一下P2P网络,它的带宽实际上是随着节点的增加而增加的,因为P2P网络的整体带宽可以大致计算为该网络中每个节点的带宽之和。
- 将客户端-服务器模式与Peer to Peer模式相比,如果一个服务器故障,客户的请求就无法得到服务,但在P2P网络中,服务器通常分布在许多节点中。即使一个或多个节点发生故障,例如一个节点下载文件失败,其余节点应该仍有完成下载所需的数据。
例子
问题和答案
问:什么是客户-服务器软件架构?答:客户-服务器软件架构是一种由客户系统和服务器系统两部分组成的模式,两者通过计算机网络或在同一台计算机上进行通信。
问:客户-服务器应用程序如何工作?
答:客户-服务器应用程序是一个由客户和服务器软件组成的分布式系统。客户端进程总是发起与服务器的连接,而服务器进程总是在等待来自任何客户端的请求。
问:当客户进程和服务器进程都在同一台计算机上运行时,会发生什么?
答:当客户端进程和服务器进程都在同一台计算机上运行时,这被称为单座设置。
问:使用客户服务器应用程序有什么好处?
答:使用客户服务器应用程序,可以更好地在多台计算机或用户之间分享工作负载。
问:在客户服务器应用程序中,谁发起连接?
答:客户进程总是在客户服务器应用程序中发起连接。
问:在客户服务器应用程序中,谁在等待请求?
答:服务器进程总是在客户端服务器应用程序中等待请求。
问:多台计算机或用户如何相互共享工作负载?
答:多台计算机或用户可以通过使用分布式系统(如客户端服务器应用程序)来共享工作负载。