使用 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 工具和依赖工具
- 创建一个新的演示应用程序
- 安装 grpc_cli,参考 grpc_cli 文档
2. 使用 grpc_cli 工具调试 Triple 服务
2.1 启动演示应用程序服务器
$ mkdir grpc_cli_test
$ cd grpc_cli_test
$ dubbogo-cli newDemo.
$ go mod tidy
$ cd go-server/cmd
$ go run .
2.2 使用 grpc_cli 进行服务调试
- 查看 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) {}
}
检查请求参数类型
例如,如果开发者想测试上述端口的 SayHello 方法,并尝试获取 HelloRequest 的具体定义,则需要执行以下命令查看对应参数的定义。
$ grpc_cli type localhost:20000 api.HelloRequest
message HelloRequest {
string name = 1 [json_name = "name"];
}
请求接口
了解请求参数的具体类型后,就可以发起调用测试对应的服务。检查返回值是否符合预期。
$ 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)