分布式计算范型

分布式计算范型

分布式计算范型主要包括消息传递、客户机/服务器、P2P、消息系统、远程过程调用、分布式对象、网络服务、移动代理和云服务。

消息传递范型

消息传递是分布式应用的最基本范型。一个进程发送代表请求的消息,该消息被传送到接收者;接收者处理该请求,并发送一条应答信息。随后,该应答信息可能触发下一次请求,并引起下一个应答消息。如此反复不断的传递信息,实现两个进程间的数据交换。
该范型所需的基本操作为send和receive。对于面向连接的通信来说,还需要cnnnect和disconnect操作。程序员可以使用这些操作发送和接收信息,而不必关注操作系统底层的通信细节。
基于该范型的开发工具有Socket应用程序接口和信息传递接口等。

客户机/服务器范型(C/S范型)

C/S范型是网络应用中使用最多的一种分布式计算范型。该模型将非对称角色分配给两个协作进程。其中,服务器进程扮演服务提供者角色,被动的等待请求的到达;客户进程向服务器发起请求,并等待服务器响应。客户进程发起请求和接收响应,通过为双方分配非对称的角色,即服务器进程监听和接受请求,客户机进程发送请求和接收响应。进程间的事件同步也被简化了:服务器进程等待来自客户的请求,客户进程则等待来自服务器的响应。
基于该范型的应用有:HTTP、FTP、DNS、finger和gopher等。

P2P范型

P2P范型源于对等计算网络。P2P是无中心服务器,依赖用户群交换的互联网体系。与C/S结构的系统不同,在P2P网络中,每个用户既是一个结点,又有服务器的功能,任何一个结点无法直接找到其他结点,必须依赖其用户群进行信息交流。
在P2P范型中,各参与进程的地位是平等的,具有相同的性能和责任。每个参与者都可以向另一个参与者发起请求和接受响应。在该范型中,每一个参与的进程既担任服务器进程的角色、又担任客户机进程的角色。
该范型的应用场景为:即时消息发送、P2P文件传输、视屏会议、协同工作等。

消息系统范型

消息系统范型分为两种,一种是点对点消息范型,另一种是发布/订阅消息范型。
其中,点对点消息系统范型表示:消息系统将来自发送者的一条消息转发到接收者的消息队列中。与基本的消息传递模型不同的是,则会中中间件模型提供了消息暂存功能,从而可以将消息的发送和接受分离。通过中间件消息系统,发送者可将消息存入接收进程的消息队列中。接受进程则从自己的消息队列中提取消息,并加以处理。
发布/订阅消息范型表示:每条消息都与某一主体或事件相关。对某个事件感兴趣的应用程序可以订阅与该事件相关的消息。当订阅者等待的事件发生时,触发该事件的进程将发布一条消息来宣布该事件或主题。中间件消息系统将这条消息分发给该消息的所有订阅者。
该范型的应用场景为:电子邮件等。

远程过程调用范型

当主机A的进程调用主机B上的方法时,A进程挂起,B进程开始执行,B执行结束后结果返回给A,A进程继续的执行。这个机制就是RPC(远程过程调用)。
先来看一下本地调用的执行过程。不同的编译器和架构下执行流程不同,这里仅概述一般流程。
1> 处理器执行调用指令,它把下一指令的地址压入栈中,并把控制流传递到调用指定的地址
2> 调用过程结束,产生返回指令
3> 弹出栈顶地址,传递控制流

分布式对象范型

分布式对象范型包括远程过程方法调用和对象请求代理。
远程方法调用是面向对象版本的RPC,在该范型中,进程可以调用对象方法,而该对象可驻留于某远程主机中,与RPC一样,参数可随方法调用传递,也可提供返回值。
对象请求代理范型由对象请求者、对象提供者和对象请求代理组成。在对象请求代理范型中,进程向对象请求代理发出发出请求,对象请求代理将请求转发给能提供预期服务的适当对象。

网络服务范型

该范型由服务请求者、服务提供者和目录服务三者组成。其工作原理为:服务提供者将自身注册到网络上的目录服务器上;当服务请求者需访问服务时,则在运行时与目录服务器联系;然后,如果请求的服务可用,则目录服务器将向目录服务进程提供一个有关该服务的引用;最后,进程利用该引用来与所需的服务进行交互。

移动代理范型

该范型是一个可移动的程序或对象。在该范型中,一个代理从源主机出发,然后根据其自身携带的执行路线,自动地在网上主机间移动。在每一主机上,代理访问所需的资源或服务,并执行必要的任务来完成其使命。这种范型不进行消息互换,而是当程序/对象在各个参与结点间移动时,携带并传递数据。支持移动代理范型的商业软件包有Concordia系统和IBM公司的Aglet系统。

云服务范型

云计算的三种服务模型为Laas、Paas、Saas。
Laas层:云供应处理、存储、网络以及其他基础性的计算机资源,以供用户部署或运行自己的软件,包括操作系统或应用等。
Paas层:用户可在云基础设施之上部署用户创建或采购的应用,这些应用使用服务商支持的编程语言或工具开发,用户并不管理或控制底层的云基础设施,包括网络、服务器、操作系统、或存储等。
Saas层:用户可使用服务商运行在云基础设施之上的应用。
发布了39 篇原创文章 · 获赞 4 · 访问量 1222

猜你喜欢

转载自blog.csdn.net/zwj1834787/article/details/103273625