写go服务的小伙伴终于有时间了,搞起。
环境要求:
1:必须要在Linux环境下使用,所以我还是使用了Docker,关于如何使用Docker快速搭建Linux环境,后面再出一篇文章.
2:如果在centos6.5环境下,先将gcc版本更新到4.8.1以上版本
3:php grpc微服务需要以下依赖:
consul - 内部包,需要自己编译
grpc - https://pecl.php.net/package/gRPC
protobuf - https://pecl.php.net/package/protobuf
yac - https://pecl.php.net/package/yac
使用pecl安装扩展真的美滋滋
pecl install grpc-版本号
pecl install protobuf-版本号
pecl install yac-版本号
版本因为我用的php7.3,所以都是使用的较新的稳定版,具体参考http://pecl.php.net
编译安装的方法
cd到项目目录
phpize
./configure --with-php-dir=/usr/local/php/bin/php-config
make && make install
生成的so文件添加到php.ini中
生成类
本来我们还要使用proto文件生成我们所需要的类的,但是go服务的小伙伴已经帮我们生成好了,开箱即用即可。
composer配置
把类放到vendor中,或者放到自己的service文件夹中都可以,但是别忘了在composer中增加autoload,让类能自动加载,否则就会报错,class not found。增加玩autoload配置文件,执行composer dumpautoload来生成自动加载文件。
项目中引用
根据proto文件或者类文件,可以看到可以调用的方法和返回值。我们只需要关心请求的地址和端口,并保证所传参数符合格式限制即可。我所用的除了一个Int64,其他都是string,所以格式并没有问题。
坑
1.参数问题,因为没注意返回的参数有没有下划线,导致我的判断错误。他们没有2个单词之间加下划线的习惯。
2.联调问题,windows基本上没希望,docker里的项目还可以,主要时配置扩展时麻烦,调用时倒没有特殊的地方。
3.返回值,返回值一定要注意,boolean值可以直接用。true = true = "true",false = false = "false",这个要注意。
4.服务是否稳定,我请求4次,有2次失败,可以考虑下失败情况下的自动处理。