分布式应用程序范式
范式意味着一种想法或模式。在本文中,我们将看到分布式应用程序范式的分类。
抽象级别:
消息传递范式:
它是进程间通信的基本方法。发送方和接收方之间的数据交换。进程发送代表请求的消息。接收者接收并处理它,然后作为回复发回。
Operations: send, receive
Connections: connect, disconnect
客户端服务器范式:
在这种方法中,服务器充当服务提供者,客户端发出请求并等待来自服务器的响应。这里的服务器是转储机。直到客户端拨打电话服务器才进行通信。许多 Internet 服务是客户端-服务器应用程序。
Server Process: listen, accept
Client Process: issue the request, accept the response
点对点范式:
进程之间的直接通信。这里没有客户端或服务器,任何人都可以向他人发出请求并获得响应。
示例:一个众所周知的点对点文件传输示例。
消息系统范式:
消息系统充当独立进程之间的中间人。它也充当开关,通过它进程以解耦的方式异步交换消息。发送者发送的消息首先在消息系统中丢弃,然后转发到与接收者关联的消息队列。
类型:
- 点对点消息模型
- 发布/订阅模型
点对点消息模型:
通过消息系统将消息从发送者转发到接收者。消息系统保留消息的存储库,并将消息直接转发到接收方的消息队列。与基本的消息传递模型不同,它提供异步消息传递。
公共/订阅模型:
在这个模型中,每条消息都与一个特定的主题或事件相关联。对消息感兴趣的任何人都可以在事件发生之前订阅该事件。当等待的事件发生时,流程发布带有事件或主题的消息。然后消息系统将消息分发给所有订阅者。
示例: IBM MQ 服务、Microsoft 消息队列
远程过程调用:
本地过程调用只发生在本地机器内。远程过程调用(RPC)发生在两台远程机器之间。
RPC 涉及可能驻留在单独机器上的两个独立进程。进程 A 希望为带有参数列表的过程调用发出请求进程 B。进程 B 运行过程并将值返回给进程 A。
分布式对象范式:
应用程序访问分布在网络上的对象。对象提供方法,通过调用应用程序获得对服务的访问。
类型:
- 远程方法调用 (RMI)
- 对象请求代理
- 对象空间
远程方法调用:
RMI 更像 RPC,但主要区别在于,它是面向对象的方法。进程调用对象中的方法,该对象可能驻留在远程主机中。参数可以与调用一起传递。
对象请求代理 (ORB):
ORB 充当对象和对象请求者之间的中介,它允许请求者可以访问多个远程对象。应用程序向对象请求代理 (ORB) 发出请求,该代理将请求定向到提供服务的适当对象。
示例: CORBA
对象空间:
对象作为逻辑实体放置在称为对象空间的空间中。提供者将他们的对象条目放置在对象空间中。订阅的请求可以访问对象。
移动代理范式:
移动代理从始发主机开始并通过主机传输到主机。在每个主机上,代理可以访问服务或资源以完成任务。
网络服务范式:
所有服务对象都注册到全局目录服务。如果进程需要一个服务,可以在运行时联系目录服务。请求者提供了一个参考,使用哪个进程与服务交互。服务由全局唯一标识符标识。
示例: Java Jini
协作应用范式:
进程作为一个组参与协作会话。每个参与过程都可以向部分或全部组提供输入。
类型:
- 基于消息的群件范例
- 基于白板的群件范例
基于消息的群件范例:
一台主机可以通过组播向组内的所有主机或组内的部分主机发送数据。
基于白板的群件范例:
该信息可在该组的公共板上获得,该组中的任何人都可以访问该信息。任何人都可以在共享显示器上读取或写入数据