RPC与RMI

简介

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调用
  1. 执行客户端调用语句,传送参数
  2. 调用本地系统发送网络消息
  3. 消息传送到远程主机
  4. 服务器得到消息并取得参数
  5. 根据调用请求以及参数执行远程过程(服务)
  6. 执行过程完毕,将结果返回服务器句柄
  7. 服务器句柄返回结果,调用远程主机的系统网络服务发送结果
  8. 消息传回本地主机
  9. 客户端句柄由本地主机的网络服务接收消息
  10. 客户端接收到调用语句返回的结果数据
  1. 客户调用客户端辅助对象stub上的方法
  2. 客户端辅助对象stub打包调用信息(变量,方法名),通过网络发送给服务端辅助对象skeleton
  3. 服务端辅助对象skeleton将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象
  4. 调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象skeleton
  5. 服务端辅助对象将结果打包,发送给客户端辅助对象stub
  6. 客户端辅助对象将返回值解包,返回给调用者
  7. 客户获得返回值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值