RPC

74 阅读1分钟

RPC的概念

  • 概念:RPC是远程服务调用。它的存在可以让服务A调用服务B的方法像调用自己本地方法一样 原理:
    • 函数的映射:通过定义IDL文件生成桩文件
    • 序列化:将请求的server+method+request内容转换成二进制
    • 网络传输:自定义的RPC协议进行数据传输

一次RPC调用过程

step1:服务端A定义idl文件并发布
step2:客户端服务B引入A的依赖并更新版本
step3:服务B与服务A建立连接
step4:服务B发起调用的时候会将service.method.param序列化,然后与服务A通信
step5:服务A收到消息后进行反序列化,本地通过动态代理进行service、method的调用,执行完成后将返回值序列化,传递给服务B

常见的RPC框架

  • grpc和thrift的区别
    • grpc使用的是protobuf的序列化协议
    • thrift使用的是TProtocol的数据结构进行序列化和反序列化

image.png

thrift的网络结构如下: image.png

Transport:代表Thrift的数据传输方式:TSocket、TFramedTransport、TFileTransport;
TProtocol:代表Thrift客户端和服务端之间传输数据的协议/格式:TBinaryProtocol、TCompactProtocol等等;
Server:TSimpleServer简单的单线程服务模型、TThreadPoolServer多线程服务模型、TNonBlockingServer非阻塞模式下的多线程。

image.png