简介
RPC(Remote Procedure Call)远程过程调用,是一种通信模式,与本地调用相区分,一块代码要调用另一个服务器上的接口,RPC像是一个实现标准,不局限于语言,通过RPC可以使两个不同程序记进行相互调用,是C/S结构,其封装了底层网络通信,像调用本地方法一样调用远程服务器上运行程序的方法,区别于HTTP服务,RPC基于TCP/IP协议,而HTTP服务基于应用层的HTTP协议,效率上RPC会更高。
RMI(Remote Method Invocation)远程方法调用,它是java实现用于分布式的一组API,它的作用与RPC一样,都是远程调用程序的某个方法,区别在于RMI是java实现的,面向对象传输的,返回的是一个对象,它要求客户端存在被返回的对象,然后通过对象调用相应的方法得到结果,而RPC得到的是直接就是一个结果,这个结果也可以是一个对象,这样RPC与RMI的调用方式就一样了。
无论对于RPC还是RMI,想要实现远程调用,其实现需求之一就是必须要选择一种通信协议(对于RPC来说,这个协议甚至可以是HTTP),需求之二就是实现被传递信的序列化。而且相通的是这两种通信包含了Client、Server、Stub、Skeleton这四个角色。
两种方式调用过程如下:
RPC调用 | RMI调用 |
---|---|
|
|