深入浅出RPC框架 | 青训营笔记

109 阅读2分钟

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

  1. 基本概念

1.1 本地函数调用: 通过函数指针找到xx函数

1.2 远程函数调用(rpc-remote procedure calls)

需要解决的问题:

  1. 怎么让对应端调我们需要的函数?(两个进程之间的地址空间不同,不可以直接掉函数指针)-》每个函数有自己的id,在做rpc的时候要附上这个id,以及id与函数的对照表

  2. 怎么把参数传给远程函数? 将数据转化为字节流

  3. 网络传输?

1.3 一次rpc完整的过程

idl文件:远程调用,我们不知道对方有什么函数,以及什么参数。这个时候我们需要一些文件来描述它。服务双方通过约定的规范进行远程调用。

生成代码: 通过编译器工具把idl文件转化成语言对应的静态库

编解码

通信协议

网络传输 过程:

image.png

1、调用方持续把请求参数对象序列化成二进制数据,经过 TCP 传输到服务提供方;

2、服务提供方从 TCP 通道里面接收到二进制数据;

3、根据 RPC 协议,服务提供方将二进制数据分割出不同的请求数据,经过反序列化将二进制数据逆向还原出请求对象,找到对应的实现类,完成真正的方法调用;

4、然后服务提供方再把执行结果序列化后,回写到对应的 TCP 通道里面;

5、调用方获取到应答的数据包后,再反序列化成应答对象。

这样调用方就完成了一次 RPC 调用。

RPC 通信流程中的核心组成部分包括了协议、序列化与反序列化,以及网络通信。

原文链接:blog.csdn.net/qq_30353203…

  1. 分层设计 1654773191922.png

2.1 编解码层 1654773328199.png

2.2 协议层

2.3 网络通信层

  1. 关键指标

  2. 企业实践