了解RPC协议

发布时间 2023-04-05 22:23:42作者: 来杯王老吉

1.什么是 RPC ?
  RPC(Remote Procedure Call)远程过程调用协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在OSI网络通信模型中,RPC跨越了传输层和应用层。
简单点来说就是服务器A上的程序调用服务器B上的程序服务(对与微服务来说可能部署在同一个服务器上,所以可能服务器A上的微服务C调用服务器A上的微服务D),对于调用者不需要关心数据在网络上是怎么传输的,只需要像调用本地方法一样使用就行了(用RPC传输方法和参数等)。RPC的一开始是为了分布式计算建立的,如今更多的用在了微服务,分布式服务器上。

2.RPC过程
  执行逻辑->

服务器A发起调用->将数据打包成能进行网络传输的消息体 ->传输到服务器B ->服务器B解码消息->服务器B执行方法->得到结果 ↓
 进行其他逻辑 <-服务器A得到结果  <-服务器A解码消息<-传输到服务器A <-将结果打包成能进行网络传输的消息体                                        

 

 


其中RPC协议框架就是将打包消息到返回结果的过程封装好。
这里涉及到通信问题,服务寻址,网络传输,编码解码,RPC协议就是让调用者(程序员)不需要关心这些,
只需要像调用本地方法一样使用就行了,你并不用知道这个调用的方法是部署在哪里,是怎么传输的。
不同的RPC框架有不同的实现方法。

3.RPC和REST的区别
RPC的过程为
->将方法和参数打包成能进行网络传输的消息体 ->传输到服务器B ->服务器B解码消息->服务器B执行方法->得到结果 ↓
 <-服务器A得到结果     <-服务器A解码消息        <-传输到服务器A        <-将结果打包成能进行网络传输的消息体    

REST的过程为
将方法和参数写在URL里(用http/https请求方法作为方法)-> 通过https/http传输到服务器B ->读取https/http消息->执行方法(请求资源)->得到结果 ↓
 <- 服务器A得到结果<-服务器A读取消息 <-传输到服务器A <-生成http/https返回体消息

1.RPC的目的是将远程服务当成本地服务来用,用来做分布式计算,而REST的目的是希望降低开发的复杂性,提高系统的可伸缩性。
2.RPC更偏向内部调用,REST更偏向外部调用。
3.RPC需要client stub(客户端存根)将方法和参数进行处理成消息体,要和通讯的服务器规定好编码解码的方法,而REST要求将方法和参数写在URL上(用http/https请求方法作为方法)
4.RPC更强调方法,用来请求其他服务器的方法,REST更强调资源,获取其他服务器的资源。
5.RPC使用的网络传输协议自定义,而REST规定要用HTTP/HTTPS。