GRPC | 青训营笔记

112 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第四篇笔记。

RPC(Remote Procedure Call),远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在OSUI网络通信模型中,RPC跨越了传输层和应用层,使开发包括网络分布式的应用程序更加容易。

RPC采用客户端/服务器模式,请求程序就是一个客户端,而服务提供程序就是一个服务器。服务端定义一些函数,客户端通过网络请求去调用这些函数拿到返回值,服务端和客户端跑在不同的机器上。

GRPC的特性:
1.客户端和服务端需要通过网络进行消息的传递,那么网络协议是grpc重要的一环,grpc协议是HTTP/2,是一种优化过的http协议。
2.服务端向外提供了一些可供调用的函数,函数的原型通过ProtoBuf协议来定义。ProtoBuf是一种数据表达方式,以.proto结尾的数据文件,可以类比json\xml等,能够将数据序列化,应用于数据存储、通信协议等方面,压缩和传输效率高。
3.支持多种语言

GRPC的四种数据流:
1.简单模式:客户端发送一次请求,服务端响应一个数据。
2.服务端数据流模式:客户端发送一次请求,服务端返回一段连续的数据流。典型的例子是客户端向服务端发送一个股票代码,服务端就把该股票的实时数据源源不断的返回给客户端。
3.客户端数据流模式:客户端源源不断的向服务端发送数据流,在发送结束后,由服务端返回一个响应。
4.双向数据流模式:客户端和服务端都可以向对方发送数据流,这个时候双方的数据可以同时互相发送,典型的例子就是聊天机器人。

GRPC的缺点: 
1.有限的浏览器支持:由于GRPC大量使用HTTP/2,因此无法在Web浏览器调用GRPC服务,GRPC比较适用于手机APP Client。
2.不友好格式:Protobuf将GRPC消息压缩成非可读格式,需要反序列化才拿到消息格式,不好调试。