RPC随想--什么是RPC

突发奇想,到底什么是RPC,我用http去执行远程的方法就不叫RPC了吗。

先来一段百度百科的原话(https://baike.baidu.com/item/远程过程调用协议/6893245?fromtitle=RPC):

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

 

然后我就非常认真的扣了一下字眼,首先RPC面向技术人员。

 

从同行的角度出发,总结为:

http去执行,你把http端到台面上来了。就只叫远程调用了,就只是RC(没有P)。这里说RC可能不标准,意在看到其微妙的区别

如果你把过程抽象、封装一下,客户端使用多态的思想调用 接口,内部隐藏实现了短连接(HTTP等等)或者长链接(Socket等等)去帮你执行远程的实现类内容(实现类内容就是所谓的RP【远程过程】)。就叫远程过程调用RPC。

 

这个隐藏通信的过程、抽象封装的细节,就是RPC和普通调用的区别。

 

没错,都有通信,把通信逻辑隐藏、封装。用户(使用RPC的人)看不到远程调用。就叫RPC

对于使用RPC框架的开发人员来说不需要考虑通信原理就能上手的远程调用。就叫RPC。

 

因为封装了,客户端就好像执行的本地方法 一样,底层实际上去跟实现逻辑所在的服务进行了通信,服务执行完再返回。 

如果你要搭建一个RPC底层,没错,还是得写通信逻辑的,底层还是基于通信原理的。

 

至于服务在哪,服务治理、服务发现。那就是底层的另一回事了。不深入。

 

那RPC就是这些通信协议上再抽象出来的协议或者说一种规范。


理解有些糙,多多指教。

posted @ 2019-09-09 15:21  不放糖的咖啡  阅读(222)  评论(0编辑  收藏  举报