1.简介
gRPC是Google开发的一个跨平台、开源的远程过程调用(RPC)框架,可以使用Protocol Buffers作为接口定义语言(IDL)和底层消息交换格式。
在gRPC中,客户端应用程序可以直接调用位于不同机器上的服务器应用程序的方法,就像本地对象一样,从而可以更容易地创建分布式应用和服务。与很多RPC系统一样,gRPC是基于定义服务的思想,即指定可以远程调用的方法及其参数和返回类型。服务端实现这个接口并运行一个gRPC服务器来处理客户端调用,客户端有一个提供相同的方法的桩接口(stub)。
gRPC支持C++、Java、Python、Go、Ruby等多种语言,可以运行在多种不同的环境中,如下图所示。
- 官方网站:https://grpc.io/
- 项目主页:https://github.com/grpc/grpc
3.快速入门
3.1 C++
C++ Quick start
3.1.1 安装依赖
由于C++没有统一的依赖管理工具,因此必须手动构建并安装gRPC及其依赖。
- CMake 3.13+,参考CMake构建工具使用教程
- Protocol Buffers,参考Protocol Buffers入门教程
- 其他工具:
sudo apt install build-essential autoconf libtool pkg-config
或者
sudo yum install make automake gcc gcc-c++ kernel-devel autoconf libtool pkgconfig
3.1.2 安装gRPC
首先克隆grpc仓库:
git clone --recurse-submodules -b v1.54.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc
之后依次执行以下命令:
$ cd grpc
$ mkdir -p cmake/build && cd cmake/build
$ cmake -DgRPC_INSTALL=ON \
-DgRPC_BUILD_TESTS=OFF \
-DCMAKE_INSTALL_PREFIX=$HOME/.local \
-S ../..
$ make -j 4
$ make install
其中CMAKE_INSTALL_PREFIX
选项用于指定安装目录,安装完成后头文件和库文件将分别被拷贝至该目录下的include和lib目录下。
3.1.3 构建示例
示例代码位于grpc/example目录,下面构建其中的helloworld示例。
$ cd examples/cpp/helloworld
$ mkdir -p cmake/build && cd cmake/build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local -S ../..
$ make -j 4
构建完成后,服务器和客户端的可执行程序在examples/cpp/helloworld/cmake/build目录下。
运行服务器:
$ ./greeter_server
Server listening on 0.0.0.0:50051
在另一个终端运行客户端,将会看到客户端输出:
$ ./greeter_client
Greeter received: Hello world