所有WIKI > G字母 > 什么是gRPC?

什么是gRPC?

gRPC是一个现代开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内和跨数据中心的服务,并支持负载平衡、跟踪、运行状况检查和身份验证。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。

gRPC来源

2015年,谷歌开源了他们的项目,该项目最终被称为gRPC。但gRPC中的“g”实际上代表什么?很多人可能认为这是为了谷歌,因为谷歌制造了它,但它没有。谷歌更改了每个版本的“g”的含义,以至于他们甚至制作了一个README来列出所有含义。

gRPC协议架构

gRPC是一种用于实现RPC API的技术。由于gRPC是开源框架,通信双方都基于该框架进行二次开发,从而使得通信双方聚焦在业务,无需关注由gRPC软件框架实现的底层通信。如下图,DATA部分即为业务层面内容,DATA下面所有的信息都由gRPC进行封装。

gRPC协议架构

什么是gRPC ProtoBuf?

gRPC ProtoBuf是gRPC协议的接口描述语言,是一种与语言无关、平台无关、扩展性好的用于通信协议、数据存储的序列化结构数据格式。gRPC ProtoBuf编码格式也称为GPB(Google Protocol Buffers)编码格式。GPB提供了一种灵活、高效、自动序列化结构数据的机制。GPB与XML、JSON编码类似,也是一种编码方式,但不同的是,它是一种二进制编码,性能好,效率高。

gRPC还提供什么?

  • 元数据
  • 流播放
  • 拦截器
  • 负载平衡
  • 取消通话

gRPC VS REST?

REST(Representational State Transfer)表征状态转移,是一种软件架构风格,用于指导WEB架构的设计和开发。REST同样为管理和配置网络设备提供了一种API接口设计的方法。gRPC与REST两者的主要差异如下:

  • REST遵循基于HTTP 1.1的请求-响应通信模型,而gRPC遵循基于HTTP 2.0的客户端-响应通信模型。HTTP 2.0相对于HTTP 1.1,在速度上有着绝对的优势。虽然REST也可以基于HTTP 2.0进行数据传输,但是为了兼容HTTP 1.1方式,导致其没有充分利用HTTP 2.0的优势。
  • 几乎所有的浏览器都支持REST,而支持gRPC的浏览器非常有限。这是REST相对于gRPC的主要优势。
  • REST使用JSON或XML编码格式承载数据,而gRPC默认使用ProtoBuf(Protocol Buffers)编码格式承载数据。ProtoBuf是二进制的,是以二进制数据进行传输,而JSON或XML编码格式以文本形式传输,所以在传输速率上gRPC更具有优势。
  • REST不提供内置代码生成功能,需要使用Swagger等工具生成API请求代码。而gRPC具有protoc编译器,具有代码生成功能,而且protoc编译器与多种编程语言兼容。

gRPC VS SOAP?

功能gRPCSOAP
协定必需 (.proto)必须(.xml)
协议HTTP/2HTTP
PayloadProtobuf(小型,二进制)XML(大型,人工可读取)
规定性严格规范严格规范
流式处理客户端、服务器,双向客户端、服务器
浏览器支持无(需要 grpc-web)
安全性传输 (TLS)WS-security规范
客户端代码生成三方工具均支持

参考资料

gRPC官网
gRPC开源框架
gRPC 基础概念详解
gRPC高性能的原因