RPC讲解

一、概念

  1. Remote Procedure Call 远程过程调⽤它是⼀种通过⽹络从远程计算机程序上请求服务,⽽不需要了解底层⽹络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI⽹络通信模型中,RPC跨越了传输层和应⽤层。RPC使得开发包括⽹络分布式多程序在内的应⽤程序更加容易。
  2. 通俗法理解:RPC就是可以跨平台调用,比如A项目用java开发的,B项目用golang开发的,如果B项目里的某个方法想直接调用A项目里的某个方法,双方底层就需要借助一个翻译机器(Client Stub以及Server Stub)来进行翻译并且共同遵守一个约定,比如protobuf、Thrift ,A调用B时,先把信息传给B的翻译机,B的翻译机按照约定进行翻译,然后调用B的方法。

 二、通信流程

  1. 客户端(Client),服务的调⽤⽅。
  2. 服务端(Server),真正的服务提供者。
  3. 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成⽹络消息,然后通过⽹络远程发送给服务⽅。
  4. 服务端存根,接收客户端发送过来的消息,将消息解包,并调⽤本地的⽅法。

RPC 采⽤客户机 / 服务器模式,通信是建⽴在 Socket 之上的 , 出于⼀种类⽐的愿望, 在⼀台机器上运⾏的主程序, 可以调⽤另⼀台机器上准备好的⼦程序 , 就像 LPC( 本地过程调⽤ ) 。请求程序就是⼀个客户机,⽽服务提供程序就是⼀个服务器。⾸先,调⽤进程发送⼀个有进程参数的调⽤信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调⽤信息的到达为⽌。当⼀个调⽤信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下⼀个调⽤信息,最后,客户端调⽤过程接收答复信息,获得进程结果,然后调⽤执⾏继续进⾏。
 

三、RPC VS HTTP

论复杂度,RPC框架肯定是⾼于简单的HTTP接⼝的。但毋庸置疑,HTTP接⼝由于受限于HTTP协议,需要带HTTP请求头,还有三次握⼿,导致传输起来效率或者说安全性不如RPC。HTTP是⼀种协议,RPC可以通过HTTP来实现,也可以通过Socket⾃⼰实现⼀套协议来实现.RPC更是⼀个软件结构概念,是构建分布式应⽤的理论基础。就好⽐为啥你家可以⽤到发电⼚发出来的电?是因为电是可以传输的。⾄于⽤铜线还是⽤铁丝还是其他 种类的导线,也就是⽤http还是⽤其他协议的问题了。

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/106734068
RPC
今日推荐