使用 grpc_cli 调试 Dubbo-go 服务

grpc_cli 工具是 gRPC 生态用于调试服务的工具,在 server 开启反射服务的前提下,可以获取到服务的 proto 文件、服务名、方法名、参数列表,以及发起 gRPC 调用。

Triple 协议兼容 gRPC 生态,并默认开启 gRPC 反射服务,因此可以直接使用 grpc_cli 调试 triple 服务。

1. 准备工作

  • dubbo-go cli 工具和依赖工具已安装
  • 创建一个新的 demo 应用
  • 安装grpc_cli,参考 grpc_cli 文档

2. 使用 grpc_cli 工具进行 Triple 服务调试

2.1 启动 demo 应用 server

  1. $ mkdir grpc_cli_test
  2. $ cd grpc_cli_test
  3. $ dubbogo-cli newDemo .
  4. $ go mod tidy
  5. $ cd go-server/cmd
  6. $ go run .

2.2 使用 grpc_cli 进行服务调试

  1. 查看 triple 服务的接口定义
  1. $ grpc_cli ls localhost:20000 -l
  2. filename: samples_api.proto
  3. package: api;
  4. service Greeter {
  5. rpc SayHello(api.HelloRequest) returns (api.User) {}
  6. rpc SayHelloStream(stream api.HelloRequest) returns (stream api.User) {}
  7. }
  1. 查看请求参数类型

    例如开发者期望测试上述端口的 SayHello 方法,尝试获取 HelloRequest 的具体定义,需要执行如下指令,可查看到对应参数的定义。

  1. $ grpc_cli type localhost:20000 api.HelloRequest
  2. message HelloRequest {
  3. string name = 1 [json_name = "name"];
  4. }
  1. 请求接口

    已经知道了请求参数的具体类型,可以发起调用来测试对应服务。查看返回值是否符合预期。

  1. $ grpc_cli call localhost:20000 SayHello "name: 'laurence'"
  2. connecting to localhost:20000
  3. name: "Hello laurence"
  4. id: "12345"
  5. age: 21
  6. Received trailing metadata from server:
  7. accept-encoding : identity,gzip
  8. grpc-accept-encoding : identity,deflate,gzip
  9. Rpc succeeded with OK status

​ 可看到获得了正确的返回值。在 server 侧可以观察到被正确请求的日志:

  1. Dubbo3 GreeterProvider get user name = laurence

最后修改 December 16, 2022: Fix check (#1736) (97972c1)