admin管理员组

文章数量:1536086

2024年3月14日发(作者:)

远程过程调用rpc协议出

篇一:远程过程调用 RPC

远程过程调用RPC

一、概述

在传统的编程概念中,过程是由程序员在本地编译完

成,并只能局限在本地运行的一段代码,也即其主程序和过

程之间的运行关系是本地调用关系。因此这 种结构在网络

日益发展的今天已无法适应实际需求。总而言之,传统过程

调用模式无法充分利用网络上其他主机的资源(如CPU、

Memory等),也无法提高 代码在实体间的共享程度,使得

主机资源大量浪费。

而本文要介绍的RPC编程,正是很好地解决了传统过

程所存在的一系列弊端。通过RPC我们可以充分利用非共

享内存的多处理器环境(例如通过局域网 连接的多台工作

站),这样可以简便地将你的应用分布在多台工作站上,应用

程序就像运行在一个多处理器的计算机上一样。你可以方便

的实现过程代码共享,提高 系统资源的利用率,也可以将

以大量数值处理的操作放在处理能力较强的系统上运行,从

1

而减轻前端机的负担。

二、RPC的结构原理及其调用机制

如前所述RPC其实也是一种C/S的编程模式,有点类

似C/S Socket 编程模式,但要比它更高一层。当我们在建

立RPC服务以后,客户端的调用参数通过底层的RPC传输

通道,可以是UDP,也可以是TCP(也即TI-RPC —无关

性传输),并根据传输前所提供的目的地址及RPC上层应用

程序号转至相应的RPC Application Porgramme Server ,

且此时的客户端处于等待状态,直至收到应答或Time Out

超时信号。具体的流程图如图1。当服务器端获得了请求消

息,则会根据注册RPC时告诉RPC系统的例程入口地址,

执行相应的操作,并将结果返回至客 户端。

图1

当一次RPC调用结束后,相应线程发送相应的信号,

客户端程序才会继续运行。

当然,一台服务主机上可以有多个远程过程提供服务,

那么如何来表示一个唯一存在的远程过程呢?一个远程过

程是有三个要素来唯一确定的:程序号、版本号和过程号。

程序号是用来区别一组相关的并且具有唯一过程号的远程

过程。一个程序可以有一个或几个不同的版本,而每个版本

的程序都包含一系列能被远程调 用的过程,通过版本的引

入,使得不同版本下的RPC能同时提供服务。每个版本都

2

本文标签: 过程调用远程相应程序