我用 php 调通了 go-micro 的grpc服务

  我们都知道搞微服务,除了拥有完美生态的java Spring Cloud那套,golang的微服务架构也是非常理想的。而且golang相比java 的臃肿内存占用更小,golang引入了协程并发粒度相比java的多线程先对更小,更可控,并发学习成本更低,不得不说golang就是趋势。

  但是相对国内来说,使用golang中小企业较少,而大多数从1415年开始的中小型公司一直使用php,为了统一技术栈,会直接选型用swoole,而swoole的微服务的国内生态一直不怎么好,相关文档很让人诟病。

  所以我这边直接选型golang

 

使用 go-micro2.0服务配合consul 搭建微服务:

 

# 安装 protoc

依赖:autoconf automake libtool curl make g++ unzip libffi-dev

    下载:https://github.com/protocolbuffers/protobuf4.0

   

   cd protoc
    ./autogen.sh
    ./configure
    make && make install
  ldconfig //刷新共享库

    测试:protoc -h

 

# gen-go-pro安装:

    go get -v -u github.com/golang/protobuf/proto

 

    cd $GOPATH/src/github/golang/protobuf/gen-go-pro/

 

    go bilud

 

    cp gen-go... /usr/bin

# protoc-gen-micro安装:

 go get github.com/micro/micro/v2/cmd/protoc-gen-micro@master

 protoc --proto_path=$(shell pwd)/proto/ --micro_out=$(shell pwd)/protoorder --go_out=$(shell pwd)/protoorder $(shell pwd)/proto/*proto

 

# docker - consul部署

 

leader节点

 docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_1 4f7b214361a7 agent -server -bootstrap -ui -node=1 -client='0.0.0.0'

集群从节点

 

    docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_2 4f7b214361a7 agent -client -node=clint -join='172.17.0.2' -client='0.0.0.0'

 

    docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_3 4f7b214361a7 agent -client -node=clint2 -join='172.17.0.2' -client='0.0.0.0'

 

consul服务界面

 

    http://192.168.33.12:8500/

 

 

 

 

一个订单微服务源码:

https://github.com/mrgAndysm/mic_order

 

 

服务开启成功示例

 

 

 

 

 

  那么如何用php 调用 golang的服务呢?

 

我们需要写个php_grpc客户端。

一、先下载插件grpc_php_plugin:

第一种方式:

通过官方文档编译方式:

$ git clone -b v1.33.1 https://github.com/grpc/grpc

$ cd grpc && git submodule update --init && make grpc_php_plugin

这个方式会遇到网络问题,子模块拉不到,编译容易依赖报错。

第二种简单粗暴方式:

直接使用该地址的已编译好的plugin 插件。

https://github.com/torome/php_grpc.git

 

二、//php_plugin

执行命令

protoc --php_out=. --grpc_out=. --plugin=protoc-gen-grpc=/[PATH]/grpc_php_plugin *.proto

最后 让php_grpc客户端跑起来。

 

接下来就是解决 php服务发现与注册的问题,敬请期待...

 

  

posted @ 2020-11-13 11:04  pgman  阅读(362)  评论(0编辑  收藏  举报