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


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

信息

1、Go@v1.17
2、php@7.4
3、grpc@1.41.1
4、ubuntu@18.04

准備工作

安裝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
cd cmake/build
cmake ../..
make protoc grpc_php_plugin
cp cmake/build/third_party/protobuf/protoc-3.17.3.0 /usr/bin/protoc
cp cmake/build/grpc_php_plugin /usr/bin/grpc_php_plugin

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

demo流程簡介

設置Goproxy環境變量:https://goproxy.cn/ 參考鏈接

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 代碼倉庫"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM