什么是RPC? | 青训营笔记

231 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

RPC介绍

RPC,即远程过程调用。它允许像调用本地服务一样调用远程服务。在分布式计算中,远程过程调用是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间的子程序,就像调用本地程序一样,无需额外地为这个交互作用编程。

IDL

IDL接口定义语言,用于描述软件组件的应用程序编程接口 (API) 的规范语言,常用于RPC。在这种情况下,IDL 在链路两端的机器之间提供了一座桥梁,这些机器可能使用不同的操作系统 (OS) 和计算机语言。可以使用IDL来自定义客户端与服务端之间的请求或响应的参数。

RPC原理

image.png ① 服务调用方以本地调用方式调用服务;

② client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;

③ client stub找到服务的地址,并将消息发送给服务端;

④ server 端接收到消息;

⑤ server stub收到消息后进行解码;

⑥ server stub根据解码结果来调用本地的服务;

⑦ 本地服务执行并将结果返回给server stub;

⑧ server stub将返回结果编码成能够进行网络传输的消息体;

⑨ 将消息发送至调用方;

⑩ client 端接收到消息;

⑪ client stub收到消息并进行解码;

⑫ 调用方得到调用的结果。

使用RPC框架的目标是只需要关心第1步和最后1步,中间的其他步骤统统封装起来,让使用者无需关心。例如社区中各式RPC框架(grpc、thrift等)就是为了让RPC调用更方便。从调用端的stub到服务端的stub,这之间的事儿就是rpc框架来做的。在调用方看起来就好像调用了本地函数一样,调用方并不关心内部具体发生了什么。