English | 中文
dubbogo-cli 是 Apache dubbo-go 工具链的命令行助手,用于创建项目脚手架、安装配套工具、查看注册中心或元数据中心信息,以及在本地调试 Dubbo 服务。
go install dubbo.apache.org/dubbo-go/v3/tools/dubbogo-cli@latest请确保 $GOPATH/bin 或 $(go env GOPATH)/bin 已加入 PATH。
dubbogo-cli version
dubbogo-cli install all
dubbogo-cli install triple
dubbogo-cli install triple-openapi
dubbogo-cli install formatter
dubbogo-cli newDemo .
dubbogo-cli newApp .
dubbogo-cli show --r zookeeper --h 127.0.0.1:2181
dubbogo-cli show --mc zookeeper --h 127.0.0.1:2181
dubbogo-cli call --h localhost --p 20001 --proto dubbo --i com.example.UserProvider --method GetUser --sendObj ./request.json --recvObj ./response.json
dubbogo-cli hessian --include ./dubbogo-cli install all 会安装当前 dubbo-go 项目常用的配套工具:
protoc-gen-go-triple:生成 Triple 客户端和服务端绑定代码。protoc-gen-triple-openapi:从 Triple protobuf 定义生成 OpenAPI v3 文档。imports-formatter:按照 dubbo-go 的 import 分组规则整理 Go import 块。
也可以单独安装:dubbogo-cli install triple、dubbogo-cli install triple-openapi、dubbogo-cli install formatter。
mkdir hello-triple
cd hello-triple
dubbogo-cli newDemo .
make proto-gen
go mod tidy生成目录:
.
|-- Makefile
|-- api
| `-- samples_api.proto
|-- go-client
| `-- cmd
| `-- client.go
|-- go-server
| `-- cmd
| `-- server.go
`-- go.mod
启动服务端:
go run ./go-server/cmd在另一个终端启动客户端:
go run ./go-client/cmd脚手架只保留 protobuf 源文件。执行 make proto-gen 后,会通过 protoc-gen-go 和 protoc-gen-go-triple 生成 *.pb.go 与 *.triple.go。
mkdir dubbo-go-app
cd dubbo-go-app
dubbogo-cli newApp .
make proto-gen
go mod tidy生成目录:
.
|-- Makefile
|-- api
| `-- api.proto
|-- build
| `-- Dockerfile
|-- chart
| |-- app
| `-- nacos_env
|-- cmd
| `-- app.go
|-- conf
| `-- dubbogo.yaml
|-- go.mod
`-- pkg
`-- service
`-- service.go
常见开发流程:
- 修改
api/api.proto。 - 执行
make proto-gen。 - 执行
go mod tidy。 - 在
pkg/service中实现服务。 - 修改
Makefile和chart/app/values.yaml中的镜像与 Helm 配置。 - 使用模板提供的 Make target 构建、发布和部署。
常用 Make target:
make proto-gen
make build
make buildx-publish
make deploy
make removeZookeeper 注册中心:
dubbogo-cli show --r zookeeper --h 127.0.0.1:2181Zookeeper 元数据中心:
dubbogo-cli show --mc zookeeper --h 127.0.0.1:2181命令会输出注册的接口和方法名。Nacos 与 Istio 支持尚未实现。
dubbogo-cli call 可以通过 JSON 文件描述请求和响应结构,并调用 Dubbo 协议服务。
dubbogo-cli call \
--h localhost \
--p 20001 \
--proto dubbo \
--i com.example.UserProvider \
--method GetUser \
--sendObj ./request.json \
--recvObj ./response.json请求字段使用 type@value 形式:
{
"ID": "string@A000",
"Male": "bool@true",
"JavaClassName": "string@com.example.CallUserStruct"
}每个 Hessian 对象都应提供 JavaClassName,并与服务端类型保持一致。
Triple 服务兼容 gRPC 生态。服务端开启 reflection 后,可以使用 grpc_cli 查看和调用接口:
grpc_cli ls localhost:20000 -l
grpc_cli type localhost:20000 org.apache.dubbo.samples.HelloRequest
grpc_cli call localhost:20000 SayHello "name: 'laurence'"grpc_cli 请参考 gRPC 官方文档安装。