RPC | 青训营笔记

57 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

在青训营的课程中学习到了Kitex框架。这是一种RPC框架,本篇文章将对RPC进行学习整理。

1. 什么是RPC

RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

核心 RPC 框架的重要组成:

  • 客户端(Client):服务调用方。
  • 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端。
  • 服务端存根(Server Stub):接收客户端的请求消息并进行解包,然后再调用本地服务进行处理。
  • 服务端(Server):服务的提供者。
  • Network Service:底层传输,可以是 TCP 或 HTTP。

为什么RPC呢?就是因为我们无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用,

IDL语言

IDL是Interface description language的缩写,指接口描述语言规范的一部分,是跨平台开发的基础。

IDL是一种很有用的工具,它提供了对接口的描述,约定了接口协议。使得通讯双方通讯时,无需再发送 scheme,有效提高了通讯数据的荷载比。

但对于RPC框架而言,IDL又不仅仅是一个接口描述语言。对于市面上绝大多数的RPC框架而言,IDL还是一个工具和一种使用过程,专指根据 IDL 描述文件,用指定的开发语言,生成对应的服务端接口模块,和客户端程序。这样的好处是,便于开发者快速开发。

在使用Kitex的过程中,我们可以使用thrift或者protobuf来作为IDL。