gRPC
在对后端的控制库接口进行封装的过程中,我们使用了gRPC作为RPC框架
gRPC是什么¶
gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法, 使得能够更容易地创建分布式应用和服务。与许多 RPC 系统类似, gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。 在服务端实现这个接口,并运行一个gRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
为什么用gRPC¶
-
基于HTTP/2
HTTP/2 提供了连接多路复用、双向流、服务器推送、请求优先级、首部压缩等机制。 可以节省带宽、降低TCP链接次数、节省CPU,帮助移动设备延长电池寿命等。 gRPC的协议设计上使用了HTTP2现有的语义,请求和响应的数据使用HTTP Body发送,其他的控制信息则用Header表示。
-
IDL使用ProtoBuf
gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。压缩和传输效率高,语法简单,表达力强
-
多语言支持
(C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java) gRPC支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它语言的版本正在积极开发中,其中,grpc支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等语言,grpc-java已经支持Android开发。
语言支持¶
- Android Java
- C# / .NET
- C++
- Dart
- Go
- Java
- Kotlin/JVM
- Node.js
- Objective-C
- PHP
- Python
- Ruby
- Web
API文档¶
gRPC更多信息请参见gRPC官方文档