Rpc远程过程调用

 

Rpc远程过程调用

 

过程概念:一个传统的程序由一个或多个过程所组成。它们往往按照一种调用等级来

安排。从过程 n 到过程 m 的箭头代表由从 n 到 m 的调用。

 

 

远程过程调用模型使用了和传统过程一样的抽象。只是,它允许一个过程的边界跨越

两台计算机。下图表示了远程调用过程模型如何将一个程序划分成两片,每片在一个单

独的计算机上执行。当然,远程过程调用不能有一台计算机传递到另一台上。在程序可以

使用远程过程调用之前,必须加入允许程序与远程过程通信的协议软件。

 

 

 

 

 

RpcGen的使用

Rpcgen的使用让我们不用去考虑通信协议和数据的串行化。

PrcGen的使用主要如下图

 

 

1.  对功能模块进行划分,分理处分布在各计算机上的模块和对应的接口函数。

2.  编写rpc文件,主要声明要分布的接口函数和版本号

3.  根据rpc文件 用rpcgen工具生成头文件和客户端服务端文件。接口被映射成两个,分别供客户端和服务端调用。

4.  编写客户端,客户端主逻辑不变,包含rpcgen生成的头文件和客户端文件,同时将主程序中调用的函数接口映射为头文件中的接口。

  客户端需要增加handle = clnt_create ( RMACHINE, RDICTPROG, RDICTVERS, “tcp” ) ; 创建和服务器的连接句柄。

5.  编写服务器,包含头文件和生成的服务端文件,生成的服务端文件已经包含了main函数,只需要将接口函数映射为模块代码中的执行函数。

 

服务端需要portmap进行动态端口映射,我的是centos,为rpcbind

服务端在portmap注册监听端口,客户端连接portmap后获取程序的监听端口号,然后和服务器直接通信

.

 

 

 

1 服务端程序在portmap注册,并监听。

2 客户端连接portmap,根据注册ID(rpc文件中声明)和版本号获得服务端的监听端口。

3 客户端直接访问服务器进行通信访问。

 

Rpcgen为我们抽象出了通信协议,把精力主要放在分布模块代码的编写上。

 

 

主要内容摘自《linux网络编程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值