PHP GRPC的试水

先说环境

  • MacOS 10.16
  • brew
  • php 7.4+

前言

研究微服务治理,苦于找不到相对于php合适的rpc框架。多个服务起来,用curl或者guzzle相互域名请求简直太逆天奇葩了。由于服务大部分都是php的,没有常驻后台的daemon开发送心跳。因此对于rpc的选型也是个很严肃的问题。
看过yar、dubbo等协议,但是不是特别理想。yar本身是php的扩展。但是不支持服务治理,或者说只是一个远程过程调用的工具。dubbo主力支持java,其他语言虽然支持,但本质对于php来说和curl没大区别。今儿记录一下php+grpc的过程

安装

官方文档:https://grpc.io/docs/languages/php/quickstart/
本身就支持php的服务端和客户端,按文档操作如下:
安装扩展:

$ pecl install protobuf
$ pecl install grpc

上面 protobuf 是 grpc 通信所使用的协议。类似thrift,一个跨语言的结构定义工具?(瞎起)

安装好后,按照文档,装个php-protoc插件,用来生成php相关的class和service

$ git clone -b v1.33.2 https://github.com/grpc/grpc
$ cd grpc
$ git submodule update --init
$ make grpc_php_plugin

第一次安装一直在报

Can't exec "aclocal": No such file or directory at /usr/local/Cellar/autoconf/2.69/share/autoconf/Autom4te/FileUtils.pm line 326.

然后发现是因为automake没装。好吧。

$ brew install automake
$ brew install protobuf #这个我偶然装的 不知道不装对后续会不会有影响

重新执行上述命令,编译安装完了。

First Example

继续按照文档,执行代码库里的submoudle:

$ cd examples/php
$ ./greeter_proto_gen.sh

如此应该是把预定义好的这个生成了php的文件,目录结构如下

i@wdeMacBook-Pro:~/Code/grpc-try/grpc/examples/php|ee5b762f33⚡ ⇒  ll
total 40
drwxr-xr-x   3 i  staff    96B 11 16 11:11 GPBMetadata
drwxr-xr-x   5 i  staff   160B 11 16 11:11 Helloworld
-rw-r--r--   1 i  staff   1.0K 11 16 10:42 README.md
-rw-r--r--   1 i  staff   348B 11 16 10:42 composer.json
drwxr-xr-x  11 i  staff   352B 11 16 10:42 echo
-rw-r--r--   1 i  staff   1.5K 11 16 10:42 greeter_client.php
-rwxr-xr-x   1 i  staff   728B 11 16 10:42 greeter_proto_gen.sh
drwxr-xr-x   6 i  staff   192B 11 16 10:42 route_guide
-rwxr-xr-x   1 i  staff   691B 11 16 10:42 run_greeter_client.sh

接着执行composer install 安装相关依赖。

$ cd ../node
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值