1 / 10

远程过程调用 (RPC)

远程过程调用 (RPC). 内容列表. RPC 背景 RPC 概念 RPC 数据表示 远程控制技术 RPC 编程. RPC 背景. 在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码,也就是说主程序和过程之间的运行关系是本地调用关系。 这种结构在网络日益发展的今天已无法适应实际需求。其调用模式无法充分利用网络上其他主机的资源(如计算资源、存储资源、数据资源、显示资源等),也无法提高代码在实体间的共享程度,使得主机资源大量浪费。. RPC 概念. 分布式程序设计

amaris
Download Presentation

远程过程调用 (RPC)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 远程过程调用(RPC)

  2. 内容列表 • RPC背景 • RPC概念 • RPC数据表示 • 远程控制技术 • RPC编程

  3. RPC背景 • 在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码,也就是说主程序和过程之间的运行关系是本地调用关系。 • 这种结构在网络日益发展的今天已无法适应实际需求。其调用模式无法充分利用网络上其他主机的资源(如计算资源、存储资源、数据资源、显示资源等),也无法提高代码在实体间的共享程度,使得主机资源大量浪费。

  4. RPC概念 • 分布式程序设计 • 在单台机器上构建并测试应用程序,然后将程序划分为两个或多个程序片,加入通信协议以允许每片程序在单独的计算机上运行。 • 从一个程序片调用另一个程序片的过程称为远程过程调用,即RPC。 • RPC是一个Client/Server模型,调用程序片(本地程序)称为rpc client,被调用程序片(远程程序)称为rpc server。

  5. RPC数据表示 • 机器数据表示问题:字节顺序、类型大小 • 解决方法:网络标准字节顺序(也称为外部数据表示,XDR) XDR机制: (1)创建一个XDR缓存; #define BUFFERSIZE 4000 XDR *xdrs; char buf[BUFFERSIZE]; xdrmem_create(xdrs,buf, BUFFERSIZE,XDR_ENCODE); (2) 使用类型转换例程将本地数据对象转换成外部数据表示; int i=200; xdr_int(xdrs,&i);

  6. RPC数据表示 • 常规类型转换例程 xdr_bool,xdr_int,xdr_float,xdr_string,…… • 复合类型转换 struct Vector { int a1; int a2; };

  7. RPC数据表示 bool_t xdr_Vector(xdrs, objp) XDR *xdrs; Vector *objp; { if (!xdr_int(xdrs, &objp->a1)) return (FALSE); if (!xdr_int(xdrs, &objp->a2)) return (FALSE); return (TRUE); }

  8. 远程控制技术 单个远程程序一次只能支持一个远程过程调用,当前远程过程调用完成之前会自动阻塞其他远程过程调用,程序员设计分布式程序时不需要考虑这种互斥。 

  9. 远程控制技术 • 静态端口映射:如portmap/111,nfs/2049 • 动态端口映射:32位prog无法一一映射到16位的port上。解决方法: (1)RPC提供了一个动态端口映射器(portmapper ); (2)每个RPC Server启动的时候向本机上运行的动态端口映射器注册自己的远程程序号、版本号、动态获得的端口号; (3)RPC Client用远程程序号+版本号向远程主机上的portmapper 查询相应的动态端口号,一旦rpc client获得了rpc server的动态端口号,就可使用该端口与rpc server建立socket通信。 

  10. RPC编程 5、为客户端和服务器端编写stub接口例程; 6、编译并链接客户程序。它由四个主要文件组成:去掉了远程过程的程序、客户端的stub(rpc生成)、客户端的接口stub以及XDR过程( rpc生成)。 7、编译并链接服务器程序。它由四个主要文件组成:远程过程组成的程序、服务器的stub(rpc生成)、服务器端的接口stub以及XDR过程( rpc生成)。 8、在远程机器上启动服务器,接着在本机上启动客户。

More Related