一个进程发送代表请求的消息,该消息被传送到接受者;接受者处理该请求,并发送一条应答消息。随后,该应答可能触发下一个请求,并导致下一个应答消息。如此不断反复传递消息,实现两个进程间的数据交换.
基于该范型的开发工具有Socket应用程序接口(Socket API)和信息传递接口(Message Passing Interface,MPI)等
客户-服务器范型(简称CS范型)是网络应用中使用最多一种分布式计算范型,该模型将非对称角色分配给两个协作进程。其中,服务器进程扮演服务提供者角色,被动地等待请求的到达。另一个客户进程向服务器发起请求,并等待服务器响应。
当前最流行的互联网应用WWW(或称为WEB)是基于客户-服务器范型的一个典型分布式应用
peer-to-peer范型源于P2P网络(又称为对等计算网络),简称为P2P范型。P2P网络是无中心服务器。
在peer-to-peer范型中,各参与进程的地位是平等的,都具有相同的性能和责任(因此,称它们为peer)。每个参与者(进程)都可以向另一个参与者发起请求和接收响应。在一个基于P2P范型的分布式应用中,每一个参与的进程往往既承担的服务器进程的角色(资源提供者),又承担了客户进程的角色(资源请求者)。
消息系统充当了一些相当独立的进程之间的中介。不同的进程以非耦合的方式,通过消息系统异步地交换消息。消息发送者(进程)在发送消息时,将一条消息放入消息系统中,后者接着将该消息转发到与各个接受者(进程)相应的消息接收队列中,一旦消息发送出去,发送者即可执行其他任务了
消息系统模型可以进一步划分为两种子类型:点对点消息模型(Point-to-point message model)和发布订阅消息模型(Public/Subscribe message model)。
1、点对点消息模型
在这种模型中,消息系统将来自发送者的一条消息转发到接收者的消息队列中。与基本的消息传递模型不同的是,这种中间件模型提供了消息暂存的功能,从而可以将消息的发送和接受分离。与基本的消息传递模型相比,点对点消息模型为实现异步消息操作提供了额外的一层抽象。如果要在基本的消息传递模型中达到同样的结果,就必须借助于线程或者子进程技术。
2、发布订阅消息模型
在该模型中,每条消息都与某一主体或事件相关。对某个事件感兴趣的应用程序可以订阅与该事件相关的消息。当订阅者等待的时间发生时,触发该事件的进程将发布一条消息来宣布该事件或主题。中间件消息系统将这条消息分发给该消息的所有订阅者。发布/订阅消息模型提供了一种用于组播或组通信的强大抽象机制。
对于基本的网络协议和基本的网络应用程序来说,消息传递范型是最适用的。但是,随着应用程序变得越来越复杂,需要为网络编程提供进一步的抽象。
远程过程调用涉及两个独立的进程,它们可以分别位于两台独立的计算机上。
如果进程A希望向另一个进程B发出请求,就可以向进程B发出一个过程调用,同时传递的还有一组参数值。与本地过程调用的情况一样,该远程过程调用也会触发进程B所提供的某一过程中预定义的动作。过程执行完毕后,进程B将返回一个值给进程A。
分布式对象典范将面对对象应用到分布式系统中,是面对象软件开发技术的自然扩展。该范型应用程序课访问分布式网络上的各个对象。通过调用对象的方法,应用程序可获取对服务的访问。
在分布式系统中,数据库一般驻存在服务器上,客户机(进程)通过远程数据库服务功能访问数据库服务器(如图所示),现有的远程数据库服务是使用RPC模式的,例如Oracle数据库提供了存储过程机制,系统与用户定义的存储过程在数据库服务器上,用户在客户端使用RPC模式调用存储过程获取数据。
远程方法调用(Remote Method Invocation,RMI)是面向对象版本的RPC。在该范型中,进程可以调用对象方法,而该对象可驻留于某远程主机中。与RPC一样,参数可随方法调用传递,也可提供返回值
对象请求代理范型由对象请求者(Object Requestor)、对象提供者(Object)和对象请求代理(Object Request Broker,ORB)组成。在对象请求代理范型中,进程向对象请求代理发出请求,对象请求代理将请求转发给能提供预期服务的适当对象。
对象请求代理范型与RMI范型非常相似。两者的主要区别在于,对象请求代理范型多了一个对象请求代理,对象请求代理充当中间件角色,作为对象请求者的应用程序可访问多个远程(或本地)对象。对象代理还可以作为异构对象之间的协调者,允许由不同API实现的对象及运行于不同平台上的对象进行交互。
网络服务范型由服务请求者、服务提供者(对象)和目录服务三者组成。网络服务范型的工作原理为:服务提供者将自身注册到网络上的目录服务器;当服务请求者(进程)需访问服务时,则在运行时与目录服务器联系;然后,如果请求的服务可用,则目录服务器将向目录服务进程提供一个有关该服务的引用;最后,进程利用该引用来与所需的服务进行交互。
移动代理是一种可移动的程序或对象。如图2-13所示,在移动代理范型中,一个代理从源主机出发,然后根据其自身携带的执行路线,自动地在网上主机间移动。在每一主机上,代理访问所需的资源或服务,并执行必要的任务来完成其使命。
移动代理范型为可移动的程序或对象提供了抽象。这种范型不进行消息互换,而是当程序/对象在各个参与结点间移动时,携带并传递数据。支持移动代理范型的商业软件包有Concordia系统和IBM公司的Aglet系统。
一个移动代理的典型应用系统实例为Agent Tcl(Tool Command Language)。到目前为止,已经出现了多种移动代理应用,其中大部分系统还只是原型系统,它们的针对性不同,实现方法也不同。Dartmouth大学的D’Agents小组致力于移动代理的开发和应用,由他们研发的Agent Tcl系统实现了多语言跨平台的移动代理功能,详细信息请参见网站Agent.cs.dartmouth.edu。
美国国家标准与技术研究院(NIST)定义了云计算的三种服务类型:基础设施即服务(IaSS)、平台即服务(PaaS)、软件即服务(SaaS)。三种类型云服务对应不同的抽象层次。
IaaS在技术是通过创建虚拟的计算、存储中心,使得其能够把计算单元、存储器、I/O设备、带宽等计算机基础设施,集中起来成为一个虚拟的资源池来对外提供服务。通过虚拟化技术,解决了资源灵活调度,提高资源利用率。
PaaS是通过互联网以服务的形式把计算环境、开发环境等平台提供给用户使用的一种范型。
SaaS是Software as a Service的缩写,即软件即服务。是通过互联网以服务的形式把软件及应用程序按需提供给用户使用的一种范型。