RPC


  • RPC:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。将tcp等网络连接访问方式,做成函数调用的方式。

  • 常用 RPC 框架:

    • Google:gRPC
    • FaceBook:Thrift
    • 百度:brpc
  • RPC 核心部分:RPC协议

    • 序列化
    • 协议编码
    • 网络传输
  • RPC核心功能部分

    • 客户端:调用方
    • 客户端stub:存放服务端地址信息,将客户端的请求数据打包成网络信息,通过网络传输模块发送给服务端
    • 网络传输模块:底层传输,TCP、HTTP
    • 服务端:服务提供者
    • 服务端stub:接受客户端传来的请求信息,并进行解包,调用本地服务处理。
  • RPC 核心技术

    • 服务寻址
    • 数据流的序列化和反序列化
    • 网络传输
  • 服务寻址:

    • CALL ID , 服务注册表,将支持的函数注册到表中,并标识唯一ID
    • 客户端通过该表获知服务端支持哪些函数。
  • 序列化和反序列化

    • 本地函数调用,参数通过压栈和出栈的方式获取。
    • 网络中,数据是通过二进制流的方式传输。
    • RPC客户端需要将参数序列化成二进制流,在服务端再反序列化成参数。
    • 常用的:Protobuf
  • 网络传输

    • TCP、UDP、HTTP2
  • RPC使用场景

    • 长链接:不必每次都去3次握手,减少开销
    • 注册发布机制:
    • 安全性,没有暴露资源
    • 微服务
    • 主要用于公司内部服务调用,性能消耗低,传输速率高,实现复杂。