GO Grpc微服務開發四 服務呼叫for php

2021-08-31 06:45:34 字數 2345 閱讀 3473

二.通過protoc檔案生成php檔案

三.php客戶端呼叫微服務 例子1

pecl install grpc

修改php.ini檔案 新增extension=grpc.so

通過php -m | grep grpc檢視grpc.so是否安裝成功

以mac為例:參考鏈結

protoc --version檢視是否安裝成功

git clone -b v1.15.0

需要grpc-php-plugin來生成proto對應的php可執行檔案。

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

可與將 grpc_php_plugin 命令加入環境變數

syntax = "proto3";

package yunpian;

service yunpian

message sendsmsreq

message sendsmsres

protoc --proto_path=examples/protos --php_out=examples/php/route_guide  --grpc_out=examples/php/route_guide 

--plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin ./examples/protos/route_guide.proto

proto_path對應proto檔案的位置,php_out指定生成php檔案的目錄,grpc_out和php_out指定相同的目錄,plugin對應上面安裝的grpc_php_plugin命令路徑,最後跟上具體proto的檔案位址。

syntax = "proto3";

package yunpian;

service yunpian

message sendsmsreq

message sendsmsres

通過protoc命令生成php檔案

protoc --proto_path=examples/protos --php_out=examples/php/route_guide  --grpc_out=examples/php/route_guide 

--plugin=protoc-gen-grpc=bins/opt/grpc_php_plugin ./examples/protos/route_guide.proto

通過composer安裝consule-php-sdk等包

"require": ,
require dirname(__file__).'/../vendor/autoload.php';

define('coord_factor', 1e7);

$servicefactory = new sensiolabs\consul\servicefactory();

$cl = $servicefactory->get("catalog"); //採用catalog的服務方式

$service = $cl->service("yunpian"); //引數傳入和服務端約定的服務名

$microservicedata = \guzzlehttp\json_decode($service->getbody(), true)[0]; //請求微服務的具體位址

$host = $microservicedata["serviceaddress"];

$port = $microservicedata["serviceport"];

$client = new yunpian\yunpianclient($host.":".$port, [

'credentials' => grpc\channelcredentials::createinsecure(),

]);$reqobj = new yunpian\sendsmsreq(); //自定義請求

$reqobj->setcode("1234");

list($data, $status) = $client->send($reqobj)->wait();

var_dump($data->getcode());

var_dump($data->getmessage());

var_dump($data->getdata());

原始碼:go-grpc-getway

GO Grpc微服務開發一 概覽

git github.com juelite micro srv.git readme.md common 公共包 common.go 實現一些基礎方法,如配置檔案讀取,獲取redis控制代碼等 register.go 服務註冊封裝 conf 配置檔案目錄 config.conf 專案配置檔案,如c...

nacos微服務註冊和feign微服務呼叫

在0.7版本之前,在單機模式時nacos使用嵌入式資料庫實現資料的儲存,不方便觀察資料儲存的基本情況。0.7版本增加了支援mysql資料來源能力,具體的操作步驟 spring.datasource.platform mysql db.num 1 db.url.0 jdbc mysql db.user...

微服務 四 服務發現 Nacos

在講服務發現之前需要先普及兩個名詞的概念 有部分人更習慣將服務提供者稱為服務端,服務消費者為客戶端。官網文件 什麼是nacos?官網文件已經解釋的很清楚了,簡單來講,nacos是乙個服務發現元件,也是配置伺服器,主要是幫我們解決了兩個問題 服務發現 解決service a怎麼發現service b的...