RPC原理和实践 | 青训营笔记

72 阅读2分钟

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

一、课程目录

  • 基本概念
  • 分层设计
  • 关键指标
  • 企业实践

二、课程内容

1、基本概念

远程函数调用(RPC-Remote Procedure Calls)需要解决的问题:

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

一次RPC的完整过程

  • IDL(Interface description language)文件:描述接口
  • 生成代码:编译器把IDL文件转换成语言对应的静态库
  • 编解码:内存中表示到字节序列的转换称为编码,反之为解码,常叫做序列化和反序列化
  • 通信协议:规范了数据在网络中的传输内容和格式
  • 网络传输:基于成熟的网络库走TCP/UDP传输

RPC的好处

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

问题:

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

2、三层核心:编解码层、协议层和网络通信层

3、关键指标

3.1 稳定性-保障策略

  • 熔断;保护调用方
  • 限流:防止大流量把服务压垮
  • 超时控制:避免浪费资源在不可用节点上

3.2 稳定性-请求成功率

  • 负载均衡
  • 重试

3.3 稳定性-长尾请求

3.4 稳定性-注册中间件

4、 企业实践

  • 微服务过微,传输和序列化开销越来越大
    • 将亲和性强的服务实例尽可能调度到同一个物理机,远程RPC调用优化为本地IPC调用

三、补充

现如今,微服务变得越来越流行,而服务间的通信也变得越来越重要,服务间通信本质是交换信息,而交换信息的中介/桥梁正是我们的API。

诚然,目前构建API最受欢迎的仍然是使用Restful(HTTP-JSON),因为它简单、快速、易懂。

gRPC和Restful的区别:

  • 编码:protobuf、JSON
  • 传输性能gRPC优
  • 传输方式:gRPC流式传输
  • 可读性:gRPC二进制数据