RPC(Remote procedure call)

在计算机科学中,远程过程调用RPC是一种进程间的通讯,允许一个计算机程序向另外一个地址空间(通常是共享网络中的另一台计算机)申请服务(使得特定程序在另一台计算机上执行),而无需程序员明确写明该远程调用的实现细节。也就是说,本质上程序员只要写出同样的代码,不管该特定程序是在本地还是在远程。当申请服务的计算机程序使用了面向对象的编程原则时,RPC被称为远程调用或远程方法调用。

许多不同的技术(通常不兼容)可以用来实现RPC。

历史起源

在早期的ARPANET文档中,将网络操作当作远程调用的想法,至少可以追朔到20世纪80年代。

该词的提出归功于Bruce Jay Nelson。RPC第一次商务上的应用之一是Xerox在1981年以“Courier"的名字提出的。RPC在Unix下的第一次普遍实现是Sun's RPC(现在称为ONC RPC),被用作网络文件系统NFS的基础。

消息传递

一个RPC是由客户端发起的,该客户端发送请求消息到一个已知的远程服务器,利用提供的参数来执行指定的应用程序。远程服务器给客户端发送回一个响应,同时应用程序继续其进程。在不同的实现中,有许多变化和微小的差异,从而导致各种不同的(不兼容的)RPC协议。当服务器正在处理调用,客户端被阻塞(客户端在服务器恢复执行前直到完成处理调用一直在等待),除非客户端发送给服务器的是一个异步请求,比如XHTTP调用。

远程调用和本地调用之间一个重要的差别在于远程调用会因为不可预期的网络问题而失败。而且,调用者通常必须在不知道远程程序是否真正被调用前处理这些错误。幂等程序(经多次调用而不产生副作用)很容易处理,但编写代码来调用远程程序常常受限于细心编写的底层子系统,这个过程仍然会碰到足够多的困难。

一次RPC过程的事件顺序

1. 客户端调用客户端根stub。该调用是本地调用,将参数用正常的方式压到堆中;

2. 客户端stub将参数打包成消息,执行系统调用来发送消息。消息的打包称为编组marshalling;

3. 客户端的本地操作系统从本地向服务器发送消息;

4. 服务器端的本地操作系统将收到的包传送到服务器的根stub;

5. 最后,服务器的根调用服务器端程序。服务器端的响应遵循同样的步骤,只不过方向相反。

标准接触机制

为了让不同的客户端访问服务器,建立了许多标准化的RPC系统。其中大多数使用接口描述语言(IDL,Interface Description Laguage)以让不同的平台调用RPC。IDL文件可用来产生代码以连接客户端和服务器。其中最常用的工具就是RPCGEN。


备注:

1. 由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。

2. 在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器

3. RPC 的主要目的是为组件提供一种相互通信的方式,使这些组件之间能够相互发出请求并传递这些请求的结果。


原文地址:http://blog.csdn.net/david_xtd/article/details/7568768

远程过程调用(RPC)是一种用于在不同计算机上执行过程调用的通信机制。它允许一个程序在网络上请求另一个计算机上的过程并获得返回结果。RPC简化了分布式系统的开发,使得开发人员可以像本地调用一样调用远程服务。 RPC的灰色区域主要体现在网络通信的不确定性。由于网络的不稳定性和传输延迟,RPC在一些情况下可能会导致性能下降或不可靠的调用结果。 首先,由于网络延迟,RPC的性能可能不如本地调用。网络通信需要一定的时来建立连接、传输数据和关闭连接。这些延迟可能对实时性要求高的应用程序产生影响。 其次,网络中存在中断、错误和丢包等问题,这可能导致RPC的不可靠性。即使请求成功发送到远程服务器,但由于网络传输中的故障,响应可能丢失或延迟到达。这使得无法保证RPC调用的可靠性。 此外,RPC中还存在安全性方面的问题。由于网络通信的开放性,可能会存在数据被窃听、篡改或伪造的风险。因此,在RPC中必须采取相应的安全措施,如加密通信、身份验证和授权等。 要解决RPC的灰色问题,可以采取一些方法。可以使用异步调用来减少对网络延迟的依赖,从而提高性能。还可以实施数据冗余和错误恢复机制来增强RPC调用的可靠性。此外,强化网络安全措施能够保护RPC调用的安全性。 综上所述,RPC作为一种分布式系统的通信机制,具有极大的灵活性和便利性。然而,由于网络通信的不确定性,它也存在一些灰色区域,如性能下降、不可靠性和安全问题。通过采取适当的方法和措施,可以最大程度地减少这些问题,提高RPC的可靠性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值