GRPC

gRPC (gRPC Remote Procedure Calls) 是一个跨平台的开源高性能远程过程调用（RPC）框架。

gRPC最初由Google创建，它使用一个通用的RPC基础设施Stubby来连接其数据中心内外运行的大量微服务，始于2001年。2015年3月，Google决定构建下一个版本的Stubby并将其开源，于是就有了gRPC。现在除了Google之外，许多组织都在使用它来支持从微服务到计算的“最后一英里”（移动、Web和物联网）的用例。

gRPC基于HTTP/2协议传输数据，使用Protocol Buffers作为接口描述语言，并提供认证（authentication）、双向串流（bidirectional streaming）和流量控制、阻塞或非阻塞绑定以及取消和超时（Deadlines）等功能。它为许多语言生成跨平台的客户端和服务器绑定。最常见的使用场景包括在微服务风格的架构中连接服务，或将移动设备客户端连接到后端服务。

gRPC对HTTP/2的复杂使用使得在浏览器中无法实现gRPC客户端，而需要使用代理。

最常见的应用场景是：

 微服务框架下，多种语言服务之间的高效交互。
 将手机服务、浏览器连接至后台
 产生高效的客户端库

 身份验证（Authentication） 
gRPC支持使用传输层安全性协议（TLS）和基于令牌的身份验证。连接到Google服务必须使用TLS。有两种类型的凭据：通道凭据和调用凭据。对于基于令牌的授权，gRPC提供了服务器拦截器和客户端拦截器。

 编码（Encoding） 
gRPC使用Protocol Buffers来编码数据。Protocol buffers提供了一种序列化格式和接口描述语言。

 测试（Testing） 
用于测试gRPC实现的一些软件工具包括Postman、ezy、Insomnia和Step CI。

 应用 
许多不同的组织已经采用了gRPC，例如Uber, Square, Netflix, IBM, CoreOS, Docker, CockroachDB, Arista Networks,  Cisco, Juniper Networks, Spotify, Zalando, Dropbox, 以及作为原始开发者的Google。

开源项目 u-bmc 使用gRPC替代智能平台管理接口（IPMI）。2019年1月8日，Dropbox宣布他们的服务导向架构（SOA）核心的RPC框架“Courier”的下一个版本将迁移到gRPC上，主要是因为它与他们现有的自定义RPC框架很好地契合。

 gRPC的替代方案 

 Cap'n Proto
 Apache Thrift
 Apache Avro
 JSON-RPC
 XML-RPC

 参见 


 参考文献 

 外部链接 
 gRPC – 官方网站 
 gRPC – opensource.google.com 
 gRPC – GitHub 
 开源中国 gRPC文档中文翻譯版 

Category:Google軟體
Category:使用BSD许可证的软件
Category:遠端程序呼叫