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
参见
*
参考文献
外部链接
- [https://grpc.io/ gRPC – 官方网站]
- [https://opensource.google/projects/grpc gRPC – opensource.google.com]
- [https://github.com/grpc/ gRPC – GitHub]
- [https://doc.oschina.net/grpc 开源中国 gRPC文档中文翻譯版]
评论 (0)