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的数据结构进行序列化和反序列化
thrift的网络结构如下:
Transport:代表Thrift的数据传输方式:TSocket、TFramedTransport、TFileTransport;
TProtocol:代表Thrift客户端和服务端之间传输数据的协议/格式:TBinaryProtocol、TCompactProtocol等等;
Server:TSimpleServer简单的单线程服务模型、TThreadPoolServer多线程服务模型、TNonBlockingServer非阻塞模式下的多线程。