RPC

远程服务调用(Remote Procedure Call, RPC)出现的目的就是为了让计算机能够与调用本地方法一样去调用远程方法,这是早在1990年之前定义分布式运算环境(Distributed Computing Environment, DCE)中就提出的问题。尽管"调用远程方法"和"调用本地方法"仅两字之差,但若要兼顾简单、透明、性能、正确、鲁棒、一致等特点,两者就不可同日而语了。在RPC中会涉及到网络请求,带来了很多新的问题,例如远程服务在哪里(服务发现)、有多少个(负载均衡),网络出现分区、超时或者服务出错了怎么办(熔断、隔离、降级),方法或参数的返回结果如何表示(序列化协议),信息如何传输(传输协议),服务权限如何管理(认证、授权),如何保证通信安全(网络安全层)等。

进程间通信(Inter-Process Communication, IPC)

RPC定义

所有RPC协议无论怎样设计,主要都是解决以下三个基本问题

如何表示数据

这里的数据包括传递给方法的参数以及方法执行后的返回值。有效地做法就是将交互双方所涉及到的数据转化为某种事先约定好的中立数据流格式来进行传输,同时将数据流转换回不同语言中对应的数据类型来使用。在RPC中称之为序列化和反序列化,过程如下图所示:

DataStream

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2015-2025 YuleZhang's Blog
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信