RPC(Remote Procedure Call),在Wiki上的解释是:
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction.
RPC可以用于不同服务进程之间的通信(无论是不是在同一台机器上)。使用RPC可以在不用特定编程的基础上,像调用本地模块一样调用远端模块,这可以广泛用于分布式系统不同服务之间的调用。
RPC基本原理
假设Server1上要调用Server2上的func
函数,完成一个基本的a+b
运算。Server1需要先将需要把参数1,3
序列化,打包成数据包后通过网络发给Server2。Server2拿到数据包后反序列化参数到内存,调用func
方法,再把返回结果序列化后返回给Server1。RPC框架参与了数据的序列化和反序列化,数据包的封装与派发,调用目标函数等过程。开发者调用Server1上的func
函数时,感觉就好像在调用本地函数一样。