二.通過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的...