rpc学习
2020-03-30 本文已影响0人
秋枫残红
什么是RPC
RPC:Remote Produre Call-远程过程调用,像调用本地方法一样调用远程方法
RPC原理
RPC采用客户端(服务调用方)/服务端(服务提供方)模式,各自独自运行。客户端需要通过引用需要使用的接口,接口的实现和运行都是在服务端。RPC主要的依赖的技术包括序列化、反序列化和数据传输协议。 imgRPC时序图
img关于时序图的一些解释:
-
1.客户端(client)通过本地调用的方式调用服务
-
2.
client stub
接收到调用方法之后将参数、方法封装成能够网络传输的消息体(序列化) -
3.
client stub
找到服务地址,并将消息发送到服务端 -
4.
server stub
接收消息并解码(反序列化) -
5.
server stub
根据解码结果调用本地服务 -
6.本地服务奖调用结果返回给
server stub
-
7.
server stub
将返回结果打包成消息(序列化)发送至调用方 -
8.
client stub
接收消息并解码(反序列化) -
9.客户端得到最终结果
有关rpc服务与http服务
首先这实际上不是一个并行的概念
rpc是远端过程调用,其调用协议通常包含传输协议和序列化协议。
http服务实际上也是也是一种rpc,只是它是基于http协议的,受协议限制有无用字段开销过大,不支持长连接等缺点,而通常提到的rpc服务一般是基于tcp协议的,在数据传输方面,有传输快请求头数据小的特点
有的时候我们嫌标准 HTTP 太慢/太复杂/不适合特定场景,那么就自己发明一个新的。