gRPC是什么

635 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。​

什么是GRPC

在说GRPC是什么之前先回顾一下RPC,因为GRPC是RPC的一种

RPC,全称Remote Procedure Call,中文译为远程过程调用。通俗地讲,使用RPC进行通信,调用远程函数就像调用本地函数一样,RPC底层会做好数据的序列化与传输,从而能使我们更轻松地创建分布式应用和服务。

而gRPC则是一个高性能、开源、通用的RPC框架。基于HTTP/2协议标准设计开发,默认采用Protocol Buffers数据序列化协议Protocol Buffers基本语法,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。

GRPC是由谷歌开源的,使用gRPC只需要定义好每个API的Request和Response,其余都会交由gRPC处理。

gRPC的通讯流程

1456103-d058dcea9171755f.webp

如图gRPC通信的第一步是定义IDL(Interface Definition Language),即接口文档(后缀为.proto)

第二步是编译proto文件,得到存根(stub)文件,即上图深绿色部分。

第三步是服务端(gRPC Server)实现第一步定义的接口并启动,这些接口的定义在存根文件里面

最后一步是客户端借助存根文件调用服务端的函数,虽然客户端调用的函数是由服务端实现的,但是调用起来就像是本地函数一样。

gRPC的特点

优缺点主题介绍
优点更为严谨、风格统一清晰gRPC使用proto文件编写接口proto文件的语法和形式是定死
优点不用花很多精力去维护文档gRPC文档即代码,接口的更改也会体现到代码中
优点消息编码gRPC使用protobuf进行消息编码,Restful一般使用JSON进行编码
优点体积小、传输快gRPC使用protobuf进行消息编码(即序列化),而经protobuf序列化后的消息体积很小(传输内容少,传输相对就快)
优点支持流式传输gRPC传输形式具体可以分为四种(unary、client stream、server stream、bidirectional stream)
缺点浏览器支持程度低浏览器对gRPC的支持程度相对于Restful并不是很好
缺点可读性低gRPC序列化的数据是二进制,不知道定义的Request和Response是什么