一、客户服务器计算模型
1 常用术语
应用程序 编程接口:一组允许客户和服务器之间相互通信的函数和可调用程序的集合
客户端:一个网络上的信息请求方,通常是一台PC或工作站,能够从服务器处查询数据库和其他信息
中间件:一组驱动程序、应用程序编程接口或其他软件的集合,用于改善客户应用程序和服务器之间的连通性关系的软件
关系数据库:一种把对信息的访问限制于满足搜索条件的数据行的数据库
服务器:一台计算机,通常是一台高性能工作站、小型计算机或大型机,存储并提供信息给网络中的众多客户使用
结构化查询语言(SQL):用于对关系数据库的寻址、创建、更新、查询
客户/服务器环境中的媚态服务器为客户机提供一系列的共享信息服务。当前最常见的服务器类型是数据库服务器,该服务器上运行着一个关系型数据库。
除了客户端机器和服务器,组成客户/服务器环境的第三个基本要素是网络,客户/服务器计算是典型的分布式计算。因为用户、应用程序和资源时按照实际业务的需求分散在各处的,它们之间通过局域网、广域网或因特网链接起来。
2 客户/服务器模型的应用
客户/服务器模型结构的主要特点是,应用程序级的任务在客户和服务器之间的分配。
使客户和服务器能够交互的基础是通信软件,这种软件的主要例子是TCP/IP。
数据库应用:是最常见的一种客户/服务器应用。使用关系型数据库,服务器基本上是一共数据库服务器,客户和服务器之间的交互形式是客户向数据库发送请求并接受数据库响应的事物操作。将客户的服务器维系在一起的是能使客户做出访问服务器上的数据库请求的支持软件。目前这种软件的一个典型例子是SQL。
客户/服务器应用程序的分类:基于主机的处理,基于服务器的处理,基于客户的处理,合作处理。
相当大的一部分处理负载在客户端上,则叫“胖客户端”,优点是它充分利用了桌面功能,分担了服务器上的应用处理并使他们更加有效,不容易产生瓶颈。
三层客户/服务器结构:用户机器、中间层服务器、后端服务器。
文件高速缓存的一致性:当使用文件服务器时,文件IO的性能相对于本地文件访问具有显著的下降,原因是网络带来的延迟。为了减轻这种性能下降,独立系统可以使用文件高速缓存来保存最贱访问的文件记录。由于局部性原理,使用本地文件高速缓存可以减少必须进行的远程服务器访问次数。这种双重高速缓存的方法用于减少通信量(客户端高速缓存)和磁盘IO(服务器高速缓存)。高速缓存之间可能会变得不一致,这是因为远程数据已经改变,而相应的已经陈旧的本地高速缓存副本并未废弃(当客户修改了也被其他客户机缓存了的文件时)。使本地高速缓存副本与远程数据的最小同步更新的问题就是高速缓存的一致性问题。
3 中间件
客户/服务器方式的很多优势都是与其模块化及将平台和应用程序混合、协调起来提供商业解决办法的能力密切相关的。
为了实现使用客户/服务器方式所带来的真正优点,开发者必须具备一组能提供统一的方式和方法,跨越各种平台访问系统资源的工具。这使程序猿能够构建下面这样的应用程序:能忽略在不同的pc和工作站上运行的差别,而且无论数据在什么位置都使用相同的方法来访问数据。
实现这一要求的常见方法是,在上层应用程序和下层通信软件及操作系统之间使用标准的编程接口与协议。这种标准化的接口与协议被人称为中间件。
需要有标准化的协议来将不同的服务器与需要访问他们的客户连接起来。目前已经有啦很多中间件软件包。他们的共同特点是能隐藏不同网络协议和操作系统的复杂性与不一致性。客户机和服务器厂商一般都提供了很多非常流行的中间件软件包来供用户选择。这样,用户可以采用一个特定的中间件策略,然后从各种厂商那里继承设备以支持这种策略。
中间件具有客户端组件和服务器段组件两部分。中间件的基本目的是使位于客户端的应用程序或用户能够访问服务器上的各种服务,同时无需考虑服务器之间的区别。
正规分布式系统可以视为一组应用程序和用户可用资源的集合。用户无需关心数据的位置或者应用程序的实际位置。所有应用程序操作建立在一个统一的应用程序编程接口之上。中间件贯穿所有客户和服务器平台,负责将客户请求定位到适合的服务器上。
中间件产品一般基于以下两种底层机制:消息传递和远程过程调用。
二、面向服务的体现结构(SOA)
面向服务的体系结构(SOA)是一种客户/服务器体系结构的形式。一个SOA把业务功能组织成模块化结构,而不是作为每个部门的一个整体的应用。这样,不同的内部部门或外部业务伙伴都可以使用常见的功能。一般来说,一个SOA由一组服务和一组使用这些服务的客户端应用组成。一个客户端请求可以涉及一个单独的服务,也可以涉及两个或多个服务来协作一些活动,协作需要服务之间的交互。
标准化接口用于使一个服务模块和另一个服务模块能够通信,以及使客户端应用和服务模块能够通信。最流行的接口是基于HTTP的XML的使用,被称为WEB服务。
一个SOA容器包含三种体系结构元素:服务提供者,服务请求者,服务代理。
三、分布式消息传递
通常计算机之间不能共享存储器,各自是独立的计算机系统。这样,基于共享内存的处理机之间的通信技术,例如信号量技术等都无法使用。取而代之的是基于消息传递的技术。一种是在消息的直接应用,因为它处于同一个系统中;第二种是一种分离的技术,以消息传递为基本功能,称为远程过程调用。
任何分布式系统中都需要的关键机制是进程间通信。现在普遍使用两种技术。消息传递机制推广了单一系统中消息的使用,且使用相同种类的协定和同步规则。另一种方法是使用远程过程调用,对于这种技术,不同机器上的两个程序使用过程调用/返回语法和语义进行交互,无论是被调用的程序还是调用程序,其行为就像是运行在相同的机器上。
服务请求可以用原语和参数表示。原语说明了要执行的功能,参数用于传递数据和控制信息。发送原语由要发送消息的进程所使用,它的参数是目标进程标识号和消息的内容。
1 可靠性和不可靠性:请求和应答方式
2 阻塞与非阻塞:
如果采用无阻塞原语或异步原语,进程不会因为要进行发送或接收而被挂起。无阻塞的接收由进程来发布,然后进程继续执行。当消息到达时,通过中断来告知进程,或者通过周期性的轮训状态告知进程。
另一种方法是使用阻塞方式,或同步原语。阻塞发送消息直到消息已经传输或消息已经发送且已接受到确认,才将控制返回给发送进程。阻塞接收直到消息已经放置在分配的缓冲区中,才返回控制。
四、远程过程调用
该技术的基本要素是允许不同机器上的程序使用简单的过程调用/返回 语义进行交互,就像两个程序在同一台机器上,也就是说,远过程调用用于对远程服务的访问。
CALL P(X,Y) P为过程名,X为传递的参数,Y为返回值
2 参数表示
采用完整的通信体系结构会导致较大的系统开销,因此远程过程调用的设计自己提供基本的通信方法。这样,转换的责任就落在远程过程调用机制上。解决这一问题的最好方法是,为普通对象提供一个标准化格式,这样,任何机器上的本地参数都可以转换成表转化的表示,也可以由标准化的表示转换而来。
3 客户/服务器绑定
绑定说明了再远程过程和调用程序之间将怎样建立联系。当两个应用程序已经建立了一个逻辑连接并且准备交换命令和数据时,绑定就形成了。
非永久绑定表示当进行远程过程调用时,在两个进程间建立逻辑连接,并且只要有返回值,就断开两个进程间的连接。
对于永久绑定,及时在过程返回后,为远程过程调用而建立的连接也仍然维持着,该连接可供将来的远程过程调用使用。
4 同步和异步
同步和异步在远程过程调用的概念和阻塞与非阻塞消息的概念累死。传统的远程过程调用时同步的,要求调用进程等待,直到被调用进程产生返回值。因此同步RPC的行为非常类似于子程序调用。
异步RPC并不阻塞调用者,应答也可以再需要他们时接收到,这使得客户在本地的执行可以与对服务器的调用并行进行。
5 面向对象机制
子啊这种方法中,客户和服务器在对象之间来回传递消息。
需要服务的客户向对象请求代理发送一个请求,对象请求代理就像在网络上可用的所有远程服务的一个目录。代理调用相应的对象并传送有关数据。然后远程对象对该请求进行服务并反馈回代理器,代理器又将应答返回给客户。
五、集群
集群技术与对称多处理技术是相对的,该宗方法提供了高性能和高可用性,并对服务器应用尤其具有吸引力。
我们可以将集群定义为一组互联的完整计算机,一起作为统一的计算资源而工作,给人以一台机器的感觉。完整的计算机表示该系统离开了集群后,仍可以自己独立运行。集群中的每台计算机一般都作为一个节点。
集群有很多种不同的分类方法,最简单的分类方法是基于集群中的计算机是否共享同一磁盘的访问。
RAID或某些类似的冗余磁盘技术的使用在集群中时很普遍的,这样,从多台计算机并存所获得的高可用性就不会受到作为单一故障点所共享磁盘的威胁。
现在的很多集群都是由连接到公共磁盘的服务器组成的,这种方法带来的变化简单地称为不共享。公共磁盘被分为若干卷,每个卷由一台计算机占用。
让多台计算机同时共享相同的磁盘也是可以的,共享磁盘方式。这样,每台计算机具有对所有磁盘上的所有卷的访问权。这种方法需要使用某种类型的上锁机制,以确保数据子啊某一时刻只能被一台计算机访问。
故障处理:两种方法-》高度可用的集群和容错集群。
每台计算机上都安装了一个中间件层的软件以支持集群操作,集群中间件为用户提供了统一的系统映像。中间件也服务提供高可用性保证,其方法是依靠负载平衡和对独立组件故障的响应。
六 、Linux集群
集群的节点使用商用联网方法进行互联,典型的是以太网