11 RPC | 青训营笔记

113 阅读2分钟

RPC

1. RPC

Remote Procedure Call:

与本地函数调用区别:

  • 函数映射
  • 数据转为字节流
  • 网络传输

RPC=Remote Produce Call 是一种技术的概念名词。RPC由本地方法调用和网络通信实现。HTTP是一种协议,RPC可以通过 HTTP 来实现,也可以通过Socket自己实现一套协议来实现.

概念模型-架构:客户端、客户端存根、服务端、服务端存根

工作过程

2023-06-09-21-49-54.png

  • IDL(Interface Definition Language)即接口定义语言,使得不同平台上运行的对象和不同语言编写的程序可以互相通信。
  • 生成代码:通过编译工具把IDl转为语言对应静态库。 解编码:从内存中表示到字节序列的转换-编码-序列化 解编码-反序列化
  • 通信协议:数据在网络中的传输内容和格式 请求/响应数据 额外元数据
  • 网络传输 TCP/UDP

RPC优点

RPC带来的问题

2.分层设计 apache-thrift

thrift-02.png 2023-06-09-23-04-09.png

2.1 编解码层

考虑兼容性(支持新增字段)、性能(编码大小解码时长)、通用性(平台语言)

二进制编码 TLV编码:length、tag占用额外空间

  • tag 标签,类型
  • length数据长度
  • value 可以嵌套TLV

2.2 协议层

协议的一般构造:

特殊结束符协议:特定字符做协议单元结束标志

变长协议:定长部分+变长部分 定长部分描述不定长的内容长度

2023-06-09-22-35-10.png

协议解析:MagicNumber - PayloadCodec - Patload

2.3 网络通信层

  • 提供API 封装底层Socket API 连接管理和事件分发
  • 功能 协议支持 tcp、udp和uds等 优雅退出、异常处理等
  • 性能 应用层buffer减少copy 高性能定时器、对象池等

Sockets API: Sockets API工作流程:

2023-06-09-22-39-09.png

Sockets API在网络传输的层级:

2023-06-09-22-40-19.png

ddl先上传了