grpc php服务治理,PHP使用gRPC请求GO服务实战

写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次失败,可以考虑下失败情况下的自动处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值