Day14 RPC| 青训营笔记

63 阅读2分钟

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

RPC需要解决的问题

基本概念

1.函数映射

2.数据转换成字节流

3.网络传输

RPC基本概念

IDL文件

通过一种中立的方式来描述接口,使得不同平台上运行的对象和不同语言编写的程序可以互相通信。

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

编解码:从内存表示到字节序列的转换称为编码,反之为解码,序列化and反序列化

通信协议:规范了数据在网络中的传输内容和格式,除必须的请求/响应数据外,还包含额外的元数据。

网络传输:通常基于成熟的网络库走TCP/UDP传输

image-20230213152154887

RPC好处

  • 单一职责,利于分工协作和运维开发
  • 可扩展性强,资源使用率更高
  • 故障隔离

RPC问题

  • 服务宕机
  • 网络异常
  • 请求量突增

这些问题可以交给RPC框架来处理

分层设计

编解码层|协议层|网络通信层

协议层

特殊结束符:一个特殊字符作为每个协议单元结束的标识

变长协议:以定长加不定长的部分组成,其中定长部分需要描述不定长的内容长度

关键指标

熔断:保护调用方,防止被调用的服务出现问题影响整个链路

限流:保护被调用方,防止大流量压垮服务

超时控制:避免浪费资源在不可用节点上

稳定性 -

请求成功率

负载均衡

重试

长尾请求

注册中间件

易用性

开箱即用 周边工具 支持protobuf和thrift

扩展性

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

观测性

内置观测服务

高性能

高吞吐

低延迟

微服务过微问题:传输和序列化开销越来越大

策略:将亲和性强的服务实例尽可能调度到同一个物理机,远程PRPC调用优化为本地IPC调用。