grpc服务端主动推送数据到客户端_.NET Core使用gRPC打造服务间通信基础设施(上)...

rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制。

利用这种传输机制,不同进程(或服务)间像调用本地进程中的方法一般进行交互,而无需关心实现细节。

rpc的主要实现流程为:

1f645b1b6006cf8c5af1020faf1204b2.png

1、客户端本地方法调用客户端stub(方法存根)。这个调用发生在客户端本地,并把调用参数推送到栈中。

2、客户端stub (方法存根)将这些参数打包,通过系统调用发送到服务器机器。打包的过程通常可以采用xml、json、二进制编码。打包的过程被称为marshalling。

3、客户端本地操作系统发送信息到目标服务器(可以通过自定义tcp协议或Http协议传输)。

4、服务器系统将信息传送到服务端stub(方法存根)

5、服务端stub (服务端方法存根) 解析信息。解析信息的过程可以称为 unmarshalling。

6、服务器stub (服务端方法存根) 调用程序,并通过类似的方式返回客户端。

为了让不同的客户端均能访问服务器,许多标准化的rpc组件往往会使用接口描述语言的形式,以便方便跨平台、跨语言的远程过程调用的实现。

图1:RPC 调用流程

参考维基百科:https://zh.wikipedia.org/wiki/%E9%81%A0%E7%A8%8B%E9%81%8E%E7%A8%8B%E8%AA%BF%E7%94%A8

二、什么时候使用RPC?

HTTP和RPC是现代微服务架构中普遍采用的两种数据传输方式,在某种场合几乎都是可以完全替换的,但又具有各自不同的特点。

1、HTTP协议是一种规范、开放、通用性非常强、标准的传输协议,几乎所有的语言都支持,如果要确保各类平台都能无缝的访问数据,可以考虑使用HTTP协议。例如目前常用的RestFul规约,定义好请求方法、数据格式并以Json的形式返回参数,能够让前后端之间的对接非常便捷;之前的开发者或许用wsdl、so

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值