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

154 阅读2分钟

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

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

  • 什么是RPC:

    RPC就是远程过程调用,即一个机器通过网络调用另外一个机器的的函数,而且就像调用本地函数一样。

  • RPC好处

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

    • 服务宕机,调用端转码处理
    • 在调用过程中网络异常,如何保证消息的可达性
    • 请求量剧增导致服务无法及时处理,怎么应对
  • 编码层的数据格式

    • 语言特定的格式,比如go语言的gob协议
    • 文本格式,比如JSON,XML,CSV等人类易读取的格式
    • 二进制编码,具备跨语言和高性能等有点,比如Thrift,Protobuf等
  • 传输协议

    一般使用四层的TCP协议,但是也有使用HTTP协议的,比如GRPC使用HTTP2.0协议。

  • RPC框架的一些指标

    • 稳定性

      • 保障策略

        • 熔断
        • 限流
        • 超时控制
      • 请求成功率

        • 重试
      • 解决长尾请求

    • 易用性

    • 扩展性

    • 观测性

    • 高性能

  • RestFul

    是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RestFul适用于移动互联网厂商作为业务接口的场

    景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

  • RestFul和RPC的区别

    • RPC一般是基于TCP实现的,RestFul是基于HTTP来实现的
    • RPC请求的header没有HTTP请求header那么多的无用信息,并且RPC请求的header一般都会压缩处理,所以RPC的传输速度是比RestFul更快,所
    • 以可以网关和外界的数据传输使用RestFul,微服务内部的各模块之间使用RPC
    • RestFul的API的设计上是面向资源的,对于同一资源的获取、传输、修改可以使用GET、POST、PUT来对同一个URL进行区别