RPC原理实现 | 青训营笔记

65 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天,本节课主要学习了RPC框架基本概念、分层设计、关键指标以及企业实践的内容。

1 基本概念

1.1 本地函数调用

image.png

1.2 远程函数调用

RPC需要解决的问题:1.函数映射 2.数据转换成字节流 3.网络传输

1.3 RPC概念模型

image.png

1.4 一次RPC的完整过程

IDL文件/生成代码/编解码/通信协议/网络传输

1.5 RPC的好处

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

1.6 RPC带来的问题

  1. 服务宕机,对方应该如何处理?
  2. 在调用过程中发生网络异常,如何保证消息的可达性?
  3. 请求量突增导致服务无法及时处理,有哪些应对措施?、

解决方法:RPC框架

2 分层设计

2.1 编解码层

image.png

  • 数据格式:语言特定的格式、文本格式、二进制编码
  • 二进制编码:TLV编码:Tag、Length、Value
  • 选型:兼容性、通用性、性能

2.2 协议层

  • 概念:特殊结束符:一个特殊字符作为每个协议单元结束的表示/变长协议:以定长加不定长的部分组成,其中定长的部分需要描述不定长的内容长度
  • 协议构造:

image.png

  • 协议解析:

image.png

2.3 网络通信层

  • Sockets API:套接字编程中的客户端必须知道服务器的IP地址以及端口号
  • 网络库:提供易用的API/协议支持/异常处理/高性能定时器/应用层buffer减少copy

3 关键指标

3.1 稳定性

  • 保障策略:熔断/限流/超时控制
  • 请求成功率
  • 长尾请求:指明显高于均值的那部分占比较小的请求
  • 注册中间件

3.2 易用性

开箱即用/周边工具

3.3 扩展性

Middleware/Option/编解码层/协议层/网络传输工具/代码生成工具插件扩展

4 企业实践

整体架构/自研网络库/扩展性设计/性能优化/合并部署

5 个人总结

了解了RPC基本概念以及RPC的核心三层,并且学习了RPC框架的核心指标