RPC的初浅理解

RPC(Remote Procedure Call)远程过程调用。
RPC这个词在分布式系统或是远程调用中听到过许多,但对于RPC到底是什么,很容易理解的不太清晰。
在网上也百度过很多,说法不一,还有很多人问RPC和webapi或是MVC Controller的区别,实际上这两种压根不是一个概念。
 
RPC,远程过程调用,肯定涉及到远程,那么,远程的概念到底是什么,个人理解是不同的进程。
以一个最简单的web应用为例,在tomcat里部署启动后,一个应用就是一个进程。在web应用里的方法调用是可以直接进行的,不用做任何额外处理。
这个时候部署了另一个web应用B(之前的为A),这个web应用B可以部署在web应用A同一个服务器上,也可以部署到其他的服务器上,这个时候,web应用B就是另外一个进程。
web应用A里想调用web应用B里的方法是没法直接调用的,需要做大量的额外操作,RPC就是干这个事情。
 
RPC的百度百科定义:
RPC(Remote Procedure Call)— 远程过程调用 ,它是一种通过 网络 从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议 假定某些 传输协议 的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信 模型中,RPC跨越了 传输层 应用层 。RPC使得开发包括网络 分布式 多程序在内的应用程序更加容易。
 
想要远程调用,必然涉及到两个应用的网络连接(如果部署在同一个服务器上,同样可以理解为远程,IP地址为127.0.0.1)。网络连接就会依赖连接协议TCP、UDP、HTTP、SOAP等等。
RPC就是依赖于这些协议,以达到web应用A可以调用web应用B上的方法效果。这里面涉及到网络连接、IO处理、数据传输(序列化反序列化)。
一个好的PRC实现,应该是调用远程方法和调用本地方法一致,让开发者感觉不到调用远程方法和本地方法有什么区别。
 
这里RPC的具体实现可以是socket连接、可以是webapi、可以是servlet、可以soap webservice、可以是restful webservice、可以是RMI(Remote Method Invocation 远程方法调用)、可以是Hessian等等,可以有很多种实现,网上的第三方框架很多,当然也可以完全自己实现。
 
看到这里,就可以很容易区分webapi、mvc Controller之类的和RPC有什么区别。
mvc中的Controller是MVC中的控制器,目的是分发http请求,到Model处理后再分发到view,返回到浏览器。它设计的目的就不是为了RPC,而是为了处理浏览器与服务器之间的交互。
我们当然可以用MVC中的Controller来实现RPC,比如spring mvc就支持restful风格的webservice,但其他的MVC框架struts2等,实现起来就显得有些别扭。更别提如果你的应用并不是web应用,那自然也没有servlet,也用不上MVC之类的框架了。
如果单纯为了实现RPC而去将应用强行变成web应用,那就完全没有意义,因为有很多其他的方式可以去实现RPC。
 
以上是对RPC初浅的理解,应该还是存在很多错误的地方,后续深入研究后,希望能有更准确的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值