使用 grpc_cli 除錯 Dubbo-go 服務

grpc_cli 工具是 gRPC 生態系統用於除錯服務的工具。它可以在伺服器上啟用[反射服務](https://github.com/grpc/grpc/blob/master/doc/server-reflection.md)的前提下取得服務的 proto 檔案、服務名稱、方法名稱、參數列表,並發起 gRPC 呼叫。

Triple 協議與 gRPC 生態系統相容,預設啟用 gRPC 反射服務,因此可以直接使用 grpc_cli 除錯 Triple 服務。

1. 準備工作

  • 已安裝 dubbo-go cli 工具和相關工具
  • 建立新的 demo 應用程式
  • 安裝 grpc_cli,參考 grpc_cli 文件

2. 使用 grpc_cli 工具除錯 Triple 服務

2.1 啟動 demo 應用程式伺服器

$ mkdir grpc_cli_test
$ cd grpc_cli_test
$ dubbogo-cli newDemo.
$ go mod tidy
$ cd go-server/cmd
$ go run .

2.2 使用 grpc_cli 進行服務除錯

  1. 檢視 Triple 服務的介面定義
$ grpc_cli ls localhost:20000 -l
filename: samples_api.proto
package: api;
service Greeter {
  rpc SayHello(api.HelloRequest) returns (api.User) {}
  rpc SayHelloStream(stream api.HelloRequest) returns (stream api.User) {}
}
  1. 檢查請求參數類型

    例如,如果開發人員想要測試上述 port 的 SayHello 方法,並嘗試取得 HelloRequest 的具體定義,則需要執行以下指令來檢視對應參數的定義。

$ grpc_cli type localhost:20000 api.HelloRequest
message HelloRequest {
  string name = 1 [json_name = "name"];
}
  1. 請求介面

    了解請求參數的具體類型後,即可發起呼叫來測試對應的服務。檢查回傳值是否符合預期。

$ grpc_cli call localhost:20000 SayHello "name: 'laurence'"
connecting to localhost:20000
name: "Hello Laurence"
id: "12345"
age: 21
Received trailing metadata from server:
accept-encoding: identity, gzip
grpc-accept-encoding : identity,deflate,gzip
Rpc succeeded with OK status

可以看出已取得正確的返回值。在伺服器端,您可以觀察到正確請求的日誌。

Dubbo3 GreeterProvider get user name = laurence

最後修改日期:2023 年 1 月 2 日:增強 Dubbogo 文件 (#1800) (71c8e722740)