更多詳細示例可直接訪問 Dubbo 官網 或搜索關注官方微信公眾號:Apache Dubbo
1. 安裝Go語言環境
建議使用最新版 go 1.17
go version >= go 1.15
【Go 語言官網下載地址】
將 $GOPATH/bin 加入環境變數
2. 安裝序列化工具protoc
【protoc 下載地址】
3. 安裝 dubbogo-cli 以及相關插件
執行以下指令安裝dubbogo-cli 至 $GOPATH/bin
$ export GOPROXY="https://goproxy.cn"
$ go install github.com/dubbogo/dubbogo-cli@latest
$ dubbogo-cli
hello
安裝依賴的工具插件
$ dubbogo-cli install all
確保上述安裝的工具位于在系統環境變數內
$ protoc --version
libprotoc 3.14.0
$ protoc-gen-go --version
protoc-gen-go v1.26.0
$ protoc-gen-go-triple --version
protoc-gen-go-triple 1.0.8
4. 生成 Demo 專案
使用安裝好的 dubbogo-cli 工具,創建demo工程,
$ mkdir quickstart
$ cd quickstart
$ dubbogo-cli newDemo .
$ tree .
.
├── api
│ ├── samples_api.pb.go
│ ├── samples_api.proto
│ └── samples_api_triple.pb.go
├── go-client
│ ├── cmd
│ │ └── client.go
│ └── conf
│ └── dubbogo.yaml
├── go-server
│ ├── cmd
│ │ └── server.go
│ └── conf
│ └── dubbogo.yaml
└── go.mod
可看到生成的專案中包含一個 client 專案和一個 server 專案,以及相關的組態檔,
4.1 查看介面描述檔案 helloworld.proto
syntax = "proto3";
package api;
option go_package = "./;api";
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (User) {}
// Sends a greeting via stream
rpc SayHelloStream (stream HelloRequest) returns (stream User) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message User {
string name = 1;
string id = 2;
int32 age = 3;
}
demo專案中,默認生成了一個介面描述檔案,介面服務名為 api.Greeter, 包含兩個 RPC 方法,入參為 HelloRequest,回傳值為 User,兩個方法分別為普通 RPC 方法和 Streaming 型別 RPC 方法,
4.2 (*可選) 使用安裝好的編譯工具編譯 pb 介面
$ cd api
$ protoc --go_out=. --go-triple_out=. ./samples_api.proto
引數意義:--go_out=. 使用上述安裝的 protoc-gen-go 插件,生成檔案到當前目錄,--go-triple_out=.使用上述安裝的 protoc-gen-go-triple 插件,生成檔案到當前目錄,
執行該指令后,會生成兩個檔案,分別是helloworld.pb (包含 proto 結構) 和 helloworld_triple.pb.go (包含 triple 協議介面),
在 demo 工程中,預先生成好了這兩個檔案,修改 .proto 檔案后重新執行命令生成,即可覆寫,
5. 開啟一次RPC呼叫
專案根目錄執行
$ go mod tidy
拉取到最新的框架依賴:
module helloworld
go 1.17
require (
dubbo.apache.org/dubbo-go/v3 v3.0.1
github.com/dubbogo/grpc-go v1.42.9
github.com/dubbogo/triple v1.1.8
google.golang.org/protobuf v1.27.1
)
require (
...
)
先后啟動服務端和客戶端: 開啟兩個終端,在 go-server/cmd 和 go-client/cmd 檔案夾下分別執行 go run . , 可在客戶端看到輸出:
client response result: name:"Hello laurence" id:"12345" age:21
獲得呼叫結果成功
6. 更多
細心的讀者可以發現,以上例子撰寫的的服務端可以接受來自客戶端的普通RPC、流式RPC呼叫請求,目前只撰寫了普通呼叫的Client,讀者可以根據 samples 庫中的例子來嘗試撰寫流式客戶端和服務端,
更多samples可以參閱 dubbo-go-samples
搜索關注官方微信公眾號:Apache Dubbo,了解更多業界最新動態,掌握大廠面試必備 Dubbo 技能
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538697.html
標籤:其他
上一篇:Function原始碼決議與實踐
下一篇:Class檔案決議
