/**
* @远程过程调用
* 分布式系统是基于进程间显式消息交换的,然而消息的发送和接收过程无法隐藏通信的存在
* 而通信的隐藏对于分布式系统中实现透明性是关键的任务
*
* @定义---当机器A上的进程调用B机器进程时,机器A的进程被挂起,机器B的进程开始执行
* 调用方可以通过使用参数将信息传送给调用方,然后可以通过传回的结果得到信息
*
* @基本的RPC操作
* @常规过程调用
* @传值调用
* 参数仅仅相当于已初始化的局部变量,被调用过程可以对参数进行修改,但是并不会影响到调用端的原参数值
*
* @引用调用
* C语言中的数组总是通过引用传递
* 实际压入堆栈的是字符数组的地址
* 如果被调用过程使用该参数来将某些内存存储到数组中,它确实修改了位于调用者过程中的数组
*
* @复制-还原调用
* 调用者首先将变量复制到堆栈中。
* 随后在调用完毕后将堆栈的值复制到原变量中,覆盖掉调用过程中造成的修改变动。
*
* @客户与服务器存根程序
* RPC背后隐藏的思想是尽量使用远程过程调用具有与本地调用相同的形式。希望调用过程是透明的,对于使用者来说。
*
* @参数的说明和存根的生成
* 交互信息格式一致
* 并且在诸如传递复杂数据结构之类的操作时遵守相同的步骤
* RPC双方必须遵守相同的协议
*
* @异步RPC
* 客户端向服务器发送RPC请求之后可以立即继续执行而非阻塞
* 服务端在收到RPC请求后立即向客户端应答,之后再调用客户端请求的过程
*/
图片来源《分布式系统原理和范型》![请添加图片描述](