Post

kratos utils

安装所有 kraots 工具集

通过 kratos 安装

执行命令:kratos tool install all

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ kratos tool install all
go get -u github.com/go-kratos/kratos/tool/kratos@v0.5.0
...
kratos: 安装成功!
...
protoc: 安装成功!
...
genbts: 安装成功!
...
genmc: 安装成功!
...
genproject: 安装成功!
...
testgen: 安装成功!
...
testcli: 安装成功!
...
wire: 安装成功!
...
swagger: 安装成功!

kraots 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
NAME:
   kratos - kratos工具集

USAGE:
   kratos [global options] command [command options] [arguments...]

VERSION:
   v0.5.0

COMMANDS:
   new, n        创建新项目
   build, b      kratos build
   run, r        kratos run
   tool, t       kratos tool
   version, v    kratos version
   self-upgrade  kratos self-upgrade
   help, h       Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)
  • kratos new

    创建项目kratos new kratos_7

  • kratos build and run

    kratos build 和 kratos run 是 go build 和 go run 的封装,可以在当前项目任意目录进行快速运行进行调试,并无特别用途。

  • kratos tool

    kratos tool 是基于 proto 生成 http&grpc 代码,生成缓存回源代码,生成 memcache 执行代码,生成 swagger 文档等工具集,先看下的执行效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ kratos tool
protoc(已安装): 快速方便生成pb.go的protoc封装,windows、Linux请先安装protoc工具 Author(kratos) [2020/03/31]
genbts(已安装): 缓存回源逻辑代码生成器 Author(kratos) [2020/03/31]
genmc(已安装): mc缓存代码生成 Author(kratos) [2020/03/31]
testgen(已安装): 测试代码生成 Author(kratos) [2020/03/31]
testcli(已安装): 测试代码运行 Author(kratos) [2020/03/31]
swagger(已安装): swagger api文档 Author(goswagger.io) [2020/03/31]

安装工具: kratos tool install demo
执行工具: kratos tool demo
安装全部工具: kratos tool install all
全部升级: kratos tool upgrade all

详细文档: https://github.com/go-kratos/kratos/blob/master/doc/wiki-cn/kratos-tool.md
  • kratos version
1
2
3
4
5
$ kratos version
 Version:      v0.5.0
 Go version:   go1.14.2
 Built:        2020/4/30
 OS/Arch:      darwin/amd64
  • kratos self-upgrade

    升级 kraots 工具

protoc 使用

  • 安装:go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
  • 使用kratos tool protoc api.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 结果一
~/gomod/demo/kratos_7 ⌚ 11:18:52
$ cd api
~/gomod/demo/kratos_7/api ⌚ 11:38:06
$ kratos tool protoc api.proto
2020/07/06 11:38:08 protoc --proto_path=/Users/hys/go/src
...
2020/07/06 11:38:11 generate api.proto success.

# 结果二
$ kratos tool protoc api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --bm_out=:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --gofast_out=plugins=grpc:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --bswagger_out=:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --ecode_out=:. api.proto
2020/07/06 11:39:06 generate api.proto success.

swagger

api 文档

  1. kratos tool protoc api.proto
  2. kratos tool swagger serve -p 5566 api.swagger.json

grpc ui

  • 生成文档

    –proto_path=? 的路径需要写 kratos 下的 third_party

protoc --proto_path=. --proto_path=.. --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --descriptor_set_out=api.protoset --include_imports api.proto

  • 启动
1
2
$ grpcui -bind 0.0.0.0 -port 8506 -plaintext -protoset api.protoset 127.0.0.1:9888
gRPC Web UI available at http://0.0.0.0:8506/
  • 测试 log
1
INFO 07/06-11:51:10.319 grpc-access-log user=no_user ip=127.0.0.1:64781 path=/demo.service.v1.Demo/Ping ts=0.000155499 ret=0 traceid= timeout_quota=0.999989715 args

ecode

  • 生成命令 kratos tool protoc --ecode ecode.proto
  • 服务注册 ecode
1
2
3
4
5
6
7
8
9
10
main.go
func main(){
    flag.Parse()
	log.Init(&log.Config{Stdout: true}) // 初始化kratos打印输出为true
	defer log.Close()
	log.Info("im_session start")
	ecode.Register(ec.CMS) // 注册ecode
	paladin.Init()
	.....
}

-在返回 return 时

时间 proto 接口的内返回 ecode.Error(ecode.New(400), "test error")

This post is licensed under CC BY 4.0 by the author.