作为开篇,简单介绍 gRPC 相关的一些知识。

关于 RPC

RPC 代指远程过程调用(Remote Procedure Call),允许运行于一台计算机的程序像调用一个本地函数一样简单的调用另一台计算机的子程序。

常见 RPC 框架

什么是gRPC

gRPC是一个现代开源高性能RPC框架。使用以可插拔的方式支持负载平衡,跟踪,运行状况检查和身份验证,从而可以有效地连接数据中心内和跨数据中心的服务。

gRPC 默认使用 Protocol Buffers,使用用 .proto 文件定义 gRPC 服务,用 Protocol Buffers 消息类型来定义方法参数和返回类型。

关于 Protocol Buffers 参见 : Protocol Buffers

主要使用场景

  • 在微服务风格架构中有效连接多语种服务
  • 连接移动设备,浏览器等到后端服务
  • 生成高效的客户端库

优点

  • 支持10多种主流语言
  • 通信效率高,服务定义简单
  • 双向流传输以及基于HTTP/2的传输
  • 可插拔的身份验证,跟踪,负载平衡和运行状况检查

官方支持的语言和平台

Language Platform Compilers / SDK
C/C++ Linux, Mac GCC 4.9+, Clang 3.4+
C/C++ Windows 7+ Visual Studio 2015+
C# Linux, Mac .NET Core, Mono 4+
C# Windows 7+ .NET Core, NET 4.5+
Dart Windows, Linux, Mac Dart 2.2+
Go Windows, Linux, Mac Go 1.6+
Java Windows, Linux, Mac JDK 8 recommended (Gingerbread+ for Android)
Kotlin/JVM Windows, Linux, Mac Kotlin 1.3+
Node.js Windows, Linux, Mac Node v4+
Objective-C Mac OS X 10.11+, iOS 7.0+ Xcode 7.2+
PHP (beta) Linux, Mac PHP 5.5+, PHP 7.0+
Python Windows, Linux, Mac Python 2.7, Python 3.4+
Ruby Windows, Linux, Mac Ruby 2.3+