当前位置:文档之家› 分布式系统进程通信

分布式系统进程通信


3、MOM
面向消息的中间件,Message-oriented Middleware; 或称为消息队列系统Message Queuing System。
使用消息队列的松耦合通信的4种组合方式
2-26 消息队列
Basic interface to a queue in a message-queuing system
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Client procedure calls client stub in normal way Client stub builds message, calls local OS Client's OS sends message to remote OS Remote OS gives message to server stub Server stub unpacks parameters, calls server Server does work, returns result to the server stub Server stub packs it in message, calls local OS Server's OS sends message to client's OS Client's OS gives message to client stub Client stub unpacks result, returns to client
三、远程对象调用
1、分布式对象 2、将客户绑定到对象 3、远程方法调用(RMI)
1、Distributed Objects
对象:状态、方法、接口 对象
状态:对象的性质(Properties)的取值。性质包括属 性Attributes(一元)和关系Relations(二元)。 方法:对状态的操作。 接口:公开的方法。
网络计算课程——
分布式系统进程通信
2006 年10月
目录
底层协议 TCP/IP 通信模型 – RPC(远程过程调用) – RMI(远程方法调用) – MOM(面向消息的中间件) – Stream
本章练习
选作下列练习之一。 1、使用Socket编写一个可以实现“聊天”功能的 服务器程序和客户程序,服务器允许同时接入 多个客户。 2、使用Sun RPC实现一个简单的远程调用程序, 例如服务器实现 n!计算。 3、使用MPI实现一个FFT分布式计算程序。
(b) 显示绑定
3、远程方法调用(RMI)
将客户绑定到对象后,客户通过代理 (proxy)来调用对象的方法。 静态调用:语言级调用,程序员生成存根,使用 预先确定的接口。 动态调用:运、Berkeley Socket(套接字) 2、MPI(消息传递接口,Message Passing Interface) 3、MOM(面向消息的中间件,Message-oriented Middleware;或称为消息队列系统Message Queuing System)
(2)传递指针 传递指针 方案1:禁用指针 方案2:复制-还原。指针所指向的对象,以消息 形式传递给服务器,在服务器中复制一份对象, 建立该对象的指针,代替客户端的指针。 (3)IDL: interface definition language
3、扩展的RPC
(1) 门(door) ) 基本RPC不区分本地调用和远程调用,均使用 消息完成,在执行本地调用时效率低下。 门(door): 本地调用:IPC 远程调用:RPC (2) 异步 异步RPC 客户发出请求后继续执行。
Steps involved in doing remote computation through RPC
2-8
(3)传递参数
(1)网络上不同处理器的编码方案 编码方案不同 编码方案 字符编码:ASCII(PC)、EBCDIC(IBM mainframe) 多字节排列: little endian(Intel X86,低位字节在地址 较小的存储单元); big endian(Sun SPARC)。 浮点数编码:IEEE方案,MS方案
(2)RPC
客户端:客户存根 客户存根(Client Stub) 客户存根 客户存根是read过程的另一种版本(不同 于传统过程调用的库函数/系统调用版本),其 执行步骤与传统过程调用相同。唯一不同的是, 它不要求库函数或系统调用提供数据,而是将 参数打包成一个消息,把消息发送到服务器, 然后调用receive原语来阻塞自己,直到收到响 应消息。 客户收到响应消息后,将结果提取出来并 复制给调用程序,然后调用程序从远程read过 程返回。
1、Berkeley Sockets
Socket primitives for TCP/IP
Primitive Socket Bind Listen Accept Connect Send Receive Close Meaning Create a new communication endpoint Attach a local address to a socket Announce willingness to accept connections Block caller until a connection request arrives Actively attempt to establish a connection Send some data over the connection Receive some data over the connection Release the connection
一、通信协议
1、OSI协议模型
2-1
消息封装
2-2
2、TCP/IP
OSI 应用层Application 表示层Presentation 会话层Session 传输层Transport 网络层Network 数据链路层Data Link 物理层Physical 传输层(TCP,UDP) 互联网层(IP) 主机至网络 TCP/IP 应用层Application
4、RPC实例
(1)DCE RPC DCE:Distributed Computing Environment 由OSF(Open Software Foundation)开发。 DCE是RPC的经典,被Microsoft系统采用。 (2)Sun RPC 更流行。参见:Marko Boger著,曹学军译, 《Java与分布式系统 》,机械工业出版社,2003 年5月。
服务器存根(Server Stub): 服务器存根 服务器存根是客户存根的等价物,将客户请求 转换为本地调用,其过程是: • 调用receive原语阻塞服务器,等待客户请求。 • 收到请求后,把参数从消息中提取出来。 • 以常规方式调用本地过程。 • 将结果打包成消息,返回给客户。
Steps of a Remote Procedure Call
分布式对象: 分布式对象 接口放在一台机器上,对象本身驻留在
另一台机器上。
远程对象: 远程对象 一种分布式对象(接口与对象分别在不同
机器上),但其状态驻留在单个机器上(普通分布式 对象的状态可能在多个机器上)。
客户端:接口代理(Proxy),相当于客户存根。 服务器:骨架(Skeleton),相当于服务器存根。
2、将客户绑定到对象
本地绑定(Bind): 本地绑定 在本地调用中称为连接(Link),即用户程 序连接到库函数代码或本地OS系统调用 (System Call)代码。 远程绑定: 远程绑定 对象定位(Location) 通信协议(TCP,UDP) 端点(endpoint)
Distr_object* obj_ref; //Declare a systemwide object reference obj_ref = …; // Initialize the reference to a distributed object obj_ref-> do_something(); // Implicitly bind and invoke a method
Primit Meaning ive Put Append a message to a specified queue Block until the specified queue is Get nonempty, and remove the first message Check a specified queue for messages, Poll and remove the first. Never block. Install a handler to be called when a Notify message is put into the specified queue.
(a) 隐式绑定
Distr_object objPref; Local_object* obj_ptr; obj_ref = …; obj_ptr = bind(obj_ref); //Declare a systemwide object reference //Declare a pointer to local objects //Initialize the reference to a distributed object //Explicitly bind and obtain a pointer to the local // proxy obj_ptr -> do_something(); //Invoke a method on the local proxy
1、RPC需要解决的问题
不同地址空间: 客户存根和服务器存根(Stub) 参数传递: 参数编组(Parameters Marshaling) IDL(Interface Definition Language)
2、基本的RPC
相关主题