gRPC入门及应用

grpc

gRPC是一个高性能、开源和通用的RPC框架,基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

gRPC基于如下思想:定义一个服务,指定其可以被远程调用的方法及其参数和返回类型。gRPC默认使用protobuf作为接口定义语言,来描述服务接口和有效载荷消息结构。

grpc

环境部署

  • protobuf:需要通过protobuf工具编译proto文件,生成服务器和客户端代码
  • grpc c library
  • php grpc扩展

安装protobuf

在使用protobuf之前,我们需要依据protobuf结构化语法定义结构化文件,再使用protoc将结构化文件生成各种语言的类。

Git:https://github.com/protocolbuffers/protobuf

Doc:https://developers.google.com/protocol-buffers/docs/proto3

先安装protoc:

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo apt-get install libtool 
# 下载安装包
wget https://github.com/protocolbuffers/protobuf/archive/master.zip
unzip master.zip
cd protobuf-master

./autogen.sh
# 配置编译参数
./configure --prefix=/usr/local/protobuf
# 编译
make
# 安装
sudo make install

可以将protobuf安装路径protoc所在的目录,加入到环境变量中,便于我们快速调用protoc命令。

1
2
# Protobuf
export PATH=$PATH:/usr/local/protobuf/bin

protoc –version

PHP gRPC扩展

1
2
3
4
5
6
7
8
9
wget http://pecl.php.net/get/grpc-1.22.0.tgz
tar zxvf grpc-1.22.0.tgz
cd grpc-1.22.0
make
sudo make install


vim /usr/local/php7/etc/php.ini
extension=rpc.so

php -m | grep grpc

grpc

定义protoc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
syntax = "proto3";

// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
string name = 1;
}

// The response message containing the greetings
message HelloReply {
string message = 1;
}
1
2
3
4
5
protoc --python_out=. --php_out=. helloworld.proto

sudo pip install grpcio-tools

python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. helloworld.proto
有用就打赏一下作者吧!