乐趣区

关于后端:gRPC快速安装

须要如下软件反对:

  • php-grpc 扩大
  • php-protobuf 扩大
  • protoc 命令行工具
  • grpc_php_plugin 模板生成工具
  • swoole 开启 openssl,http2

一、装置

1. 编译装置 grpc 扩大 (留神 grpc 版本对应的 protobuf 版本号)

2. 下载解压缩

wget http://pecl.php.net/get/grpc-1.30.0.tgz
tar xvf grpc-1.30.0.tgz
cd grpc-1.30.0

编译装置

/usr/local/php/72/bin/phpize
./configure --with-php-config=/usr/local/php/72/bin/php-config
make && make install

配置 php.ini

vim /usr/local/php/etc/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/grpc.so

重启 php 服务

/etc/init.d/php-fpm reload

2. 编译装置 protobuf 扩大

下载解压缩 protobuf

wget http://pecl.php.net/get/protobuf-3.12.2.tgz
tar xvf protobuf-3.12.2.tgz
cd protobuf-3.12.2

编译装置

/usr/local/php/72/bin/phpize
./configure --with-php-config=/usr/local/php/72/bin/php-config
make && make install

配置 php.ini

vim /usr/local/php/etc/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/protobuf.so

重启 php 服务

/etc/init.d/php-fpm reload

3. 从新编译装置 swoole

 ./configure --enable-openssl --with-openssl-dir=/usr/local/opt/openssl 
 --enable-http2 --with-php-config=/usr/local/php/bin/php-config

4. grpc_php_plugin 模板生成工具(用源码装置会有翻墙问题,间接搜编译好的文件)

5. 最初一步,测试

mkdir grpc 目录

创立 grpc.proto 文件

syntax = "proto3";

package grpc;

service Hi {rpc sayHello (HiUser) returns (HiReply) {}}

message HiUser {
    string name = 1;
    int32 sex = 2;
}

message HiReply {
    string message = 1;
    HiUser user = 2;
}

执行生成命令:

protoc -I=. grpc.proto --proto_path=grpc/ --php_out=grpc/ --grpc_out=grpc/ 
--plugin=protoc-gen-grpc=/usr/bin/grpc_php_plugin

最初,tree grpc,看成果,胜利啦!😄

grpc
├── GPBMetadata
│   └── Grpc.php
└── Grpc
    ├── HiClient.php
    ├── HiReply.php
    └── HiUser.php

二、gRPC 压测工具

下载安装:ghz 工具包:https://github.com/bojand/ghz/releases

压测命令:

ghz -n 100 -c 10 --insecure --proto ./api.proto --call api.HelloWorld.Say 
 -d '[{"Message":"hello"},{"Message":"hi"}]' 127.0.0.1:9092

看成果:

Summary:
  Count:    10000
  Total:    1.80 s
  Slowest:    39.19 ms
  Fastest:    0.52 ms
  Average:    11.16 ms
  Requests/sec:    5545.06

Response time histogram:
  0.515  [1]    |
  4.383  [610]  |∎∎∎∎∎∎∎
  8.250  [1881] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  12.118 [3328] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  15.985 [2895] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  19.853 [1145] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  23.720 [93]   |∎
  27.588 [8]    |
  31.455 [17]   |
  35.323 [14]   |
  39.191 [8]    |

Latency distribution:
  10 % in 5.38 ms
  25 % in 8.27 ms
  50 % in 11.23 ms
  75 % in 13.87 ms
  90 % in 16.52 ms
  95 % in 17.75 ms
  99 % in 20.77 ms

Status code distribution:
  [OK]   10000 responses
退出移动版