goat
微服务工具箱, 构建微服务中使用的工具集
- http框架: 用于构建领域服务的路由框架, 基于httprouter进行封装
- 异常处理: 定义API Exception
- 日志处理: 封装zap, 用于日志处理
- 加密解密: 封装cbc和ecies
- 自定义类型: ftime方便控制时间序列化的类型, set集合
- 服务注册: 服务注册组件
- 缓存处理: 用于构建多级对象缓存
- 事件总线: 用于系统事件订阅与发布
- 链路追踪: mcubte提供的组件都内置了链路追踪
快速上手
- 首先你需要安装goat, 所有的功能都集成到这个CLI工具上了
$ go install github.com/opengoats/goat/cmd/goat@latest
$ goat -h
goat 分布式服务构建工具
Usage:
goat [flags]
goat [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
generate 代码生成器
help Help about any command
project 项目初始化工具
proto 项目protobuf管理类工具
Flags:
-h, --help help for goat
-v, --version the goat version
Use "goat [command] --help" for more information about a command.
- goat提供项目初始化能力, 利用goat提供的工具箱, 快速组装出一个接近生产级别的应用
$ goat project init
? 请输入项目包名称: (github.com/opengoats/goat-demo) github.com/opengoats/cmdb
? 请输入项目包名称: github.com/opengoats/cmdb
? 请输入项目描述: 多云资产管理平台
? 请输入项目描述: 多云资产管理平台
? 是否接入权限中心[keyauth] No
? 选择数据库类型: MySQL
? MySQL服务地址: (127.0.0.1:3306) 192.168.10.10
? MySQL服务地址: 192.168.10.10
? 数据库名称: cmdb
? 数据库名称: cmdb
? 生成样例代码 Yes
? 选择HTTP框架: go-restful
项目初始化完成, 项目结构如下:
├───.gitignore (307b)
├───.goat.yaml (208b)
├───.vscode
│ └───settings.json (242b)
├───README.md (4315b)
├───apps
│ ├───all
│ │ ├───api.go (142b)
│ │ ├───impl.go (173b)
│ │ └───internal.go (111b)
│ └───book
│ ├───api
│ │ ├───book.go (2335b)
│ │ └───http.go (2313b)
│ ├───app.go (2322b)
│ ├───impl
│ │ ├───book.go (4131b)
│ │ ├───dao.go (765b)
│ │ ├───impl.go (806b)
│ │ └───sql.go (337b)
│ └───pb
│ └───book.proto (2435b)
├───client
│ ├───client.go (1026b)
│ ├───client_test.go (657b)
│ └───config.go (172b)
├───cmd
│ ├───init.go (1264b)
│ ├───root.go (1322b)
│ └───start.go (3929b)
├───conf
│ ├───config.go (4062b)
│ ├───load.go (759b)
│ └───log.go (385b)
├───docs
│ ├───README.md (16b)
│ └───schema
│ └───tables.sql (860b)
├───etc
│ ├───config.env (487b)
│ ├───config.toml (328b)
│ └───unit_test.env (17b)
├───go.mod (32b)
├───main.go (97b)
├───makefile (2998b)
├───protocol
│ ├───grpc.go (1394b)
│ └───http.go (3008b)
├───swagger
│ └───docs.go (744b)
└───version
└───version.go (661b)
开发环境
# 1.安装protoc编译器, 项目使用版本: v3.19.1
# 下载预编译包安装: https://github.com/protocolbuffers/protobuf/releases
# 2.protoc-gen-go go语言查询, 项目使用版本: v1.27.1
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
# 3.安装protoc-gen-go-grpc插件, 项目使用版本: 1.1.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# 4.安装自定义proto tag插件
go install github.com/favadi/protoc-go-inject-tag@latest
make gen
make run