RPC 框架重要知识点整理 | 青训营笔记

178 阅读2分钟

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

前言

本文简述了 RPC 的基本概念和模型。

什么是 RPC

在分布式计算中,远程过程调用 (RPC) 是指计算机程序导致过程(子例程)在不同的地址空间(通常在共享网络上的另一台计算机上)中执行,其编码就像普通(本地)过程调用一样,程序员没有显式编码远程交互的详细信息。也就是说,程序员编写的代码基本相同,无论子例程是执行程序的本地还是远程的。这是客户端-服务器交互的一种形式(调用方是客户端,执行者是服务器),通常通过请求-响应消息传递系统实现。—— Wikipedia

与本地函数调用不同,远程过程调用实际上是将网络请求映射并封装成一个本地函数的样子。RPC 需要解决的问题有函数映射、数据转换成字节流、网络传输等方面。

一个 RPC 大约包含以下部分:

  • IDL(Interface description language) 文件:通过一种中立的方式来描述接口,使得在不同平台上运行的对象合用不同语言编写的程序可以相互通信。
  • 生成代码:通过编译器工具把 IDL 文件转换成语言对应的静态库
  • 编解码:从内存中表示到字节序列的转换成为编码,反之成为解码,也常叫做序列化和反序列化
  • 通信协议:规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据
  • 网络传输:通常基于成熟的网络库走 TCP/UDP 传输

RPC 概念模型

1984 年由 Nelson 发表的论文《Implementing remote procedure calls》提出 RPC 的过程由 5 个模型组成:User、User-stub、RPCRuntime、Server-stub、Server。

User 通过发起本地函数调用,由 User-stub 将函数参数包装并由 RPCRuntime 发送给被调用方,被调用方的 RPCRuntime 接受数据后,由 Server-stub 解包装参数到服务器,服务器处理后再以相同方式将数据数据返回给 User,完成一次 RPC 调用。

RPC 的优劣

好处:

  1. 单一职责,有利于分工协作和运维开发
  2. 可扩展性强,资源使用率更优
  3. 故障隔离,服务的整体可靠性更高

问题:

  1. 目标服务宕机的处理问题
  2. 调用过程中网络异常导致的消息可达性
  3. 请求量突增导致服务无法及时处理

引用

该文章部分内容来自于以下课程或网页:

分发

This work is licensed under CC BY-SA 4.0