1. 程式人生 > 其它 >grpc初體驗:Go服務端、php客戶端

grpc初體驗:Go服務端、php客戶端

grpc初體驗:Go服務端、php客戶端

資訊

1、[email protected]
2、[email protected]
3、[email protected]
4、[email protected]

準備工作

安裝Go
安裝php
安裝php擴充套件:grpc 、protobuf (可不安裝)
生成protoc、grpc_php_plugin可執行檔案

生成protoc、grpc_php_plugin可執行檔案

git clone -b v1.41.1 https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
mkdir -p cmake/build
cmake ../..
make protoc grpc_php_plugin
cp cmake/build/third_party/protobuf/protoc-3.17.3.0 /usr/local/protoc
cp cmake/build/grpc_php_plugin /usr/local/grpc_php_plugin

ps:網上很多資料不是這麼做的,但我測試時候那些方法不好使了
protoc所在目錄:cmake/build/third_party/protobuf/protoc-3.17.3.0
grpc_php_plugin所在目錄:cmake/build/grpc_php_plugin

demo流程簡介

mkdir grpc-demo
cd grpc-demo
mkdir go php protos
cd protos
vim hello.proto [1] //定義服務端方法
生成Go服務端程式碼:protoc protos/hello.proto --go_out=plugins=grpc:go
組冊Message服務
生成php客戶端程式碼:protoc protos/hello.proto --php_out=php --grpc_out=php --plugin=protoc-gen-grpc=/usr/bin/grpc_php_plugin

php_out:php程式碼輸出路徑,生成 request 、response、client程式碼
grpc_out:GPBMetadata輸出路徑,用於儲存.proto的二進位制元資料
plugin:生成程式碼外掛的絕對路徑

編寫請求客戶端
測試:啟動服務:go run go/main.go 請求服務:php php/hello.php

備註

hello.proto 編寫使 需要定義 package
服務端和客戶端程式碼生成時,package 可根據情況進行修改

Go服務端:package pb
php客戶端:App.Message,可根據自己的名稱空間進行自定義。生成後,程式碼的名稱空間不能修

php 第三方庫:grpc/grpc、google/protobuf

google/protobuf 可用php擴充套件代替

[參考資料]
[1]:https://github.com/grpc/grpc/tree/master/src/php "protoc和grpc_php_plugin生成文件"
[2]:https://www.cnblogs.com/lovezbs/p/13382025.html "參考例項"
[3]:https://www.bookstack.cn/read/eddycjy-grpc/2138a6a48029f32c.md#exooxl "Go客戶端"
[4]:https://gitee.com/fjgh/grpc-demo "demo 程式碼倉庫"