更方便的在微信公众号阅读文章可以关注公众号:海生的go花园
一、介绍
Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。
由bilibili开源出来,在bilibili站大量使用。
官方网址:https://go-kratos.dev/docs/
本入门教程,将会教大家安装以及入门使用。
二、安装
1、安装go
可以到官网 https://go.dev/dl/
下载对应的包,然后安装。
2、安装protobuf
我们使用brew安装
brew install protobuf
安装好了后,我们可以使用 执行一下 protoc --version
➜ protoc --version
libprotoc 3.21.7
3、安装protobuf的go扩展工具 protoc-gen-go
go install google.golang.org/protobuf/cmd/protoc-gen-go
4、安装kratos
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
三、创建项目
通过 kratos 命令创建项目模板:
kratos new helloworld
我们进入helloworld查看一下文件结构
➜ cd helloworld
➜ tree
结构如下:
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── api
│ └── helloworld
│ └── v1
│ ├── error_reason.pb.go
│ ├── error_reason.proto
│ ├── greeter.pb.go
│ ├── greeter.proto
│ ├── greeter_grpc.pb.go
│ └── greeter_http.pb.go
├── cmd
│ └── helloworld
│ ├── main.go
│ ├── wire.go
│ └── wire_gen.go
├── configs
│ └── config.yaml
├── go.mod
├── go.sum
├── internal
│ ├── biz
│ │ ├── README.md
│ │ ├── biz.go
│ │ └── greeter.go
│ ├── conf
│ │ ├── conf.pb.go
│ │ └── conf.proto
│ ├── data
│ │ ├── README.md
│ │ ├── data.go
│ │ └── greeter.go
│ ├── server
│ │ ├── grpc.go
│ │ ├── http.go
│ │ └── server.go
│ └── service
│ ├── README.md
│ ├── greeter.go
│ └── service.go
├── openapi.yaml
└── third_party
四、Kratos项目结构介绍
4.1、Makefile 文件为make命令的一个文件,我们打开有如下命令
4.1.1 make init
init:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2@latest
go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest
go install github.com/google/wire/cmd/wire@latest
会初始化安装这个框架的一个依赖。
如果之后自己还有一些工具之类的需要安装,可以放到这里。
4.1.2 make config
config:
protoc --proto_path=./internal \
--proto_path=./third_party \
--go_out=paths=source_relative:./internal \
$(INTERNAL_PROTO_FILES)
会生成 internal/conf/conf.pb.go 文件,提供对 internal/conf/conf.proto文件的调用方法。
internal/conf/conf.proto 文件对应的配置文件为 configs/config.yaml文件。
4.1.3 make api
api:
protoc --proto_path=./api \
--proto_path=./third_party \
--go_out=paths=source_relative:./api \
--go-http_out=paths=source_relative:./api \
--go-grpc_out=paths=source_relative:./api \
--openapi_out=fq_schema_naming=true,default_response=false:. \
$(API_PROTO_FILES)
主要用来把 api目录里的定义的proto文件生成对应的go文件。
比如示例的api/helloworld/v1/greeter.proto文件生成 greeter.pb.go文件。
4.1.4 make generate
生成wire依赖注入文件
generate:
go mod tidy
go get github.com/google/wire/cmd/wire@latest
go generate ./...
主要用来把helloword这个项目里的 cmd/helloword/wire.go文件生成
cmd/helloword/wire_gen.go依赖注入文件。
4.1.5 make build
build:
mkdir -p bin/ && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./...
生成可执行编译文件
我们执行一下,会在 bin目录下生成一个 helloworld可执行文件。
到此执行一下这个文件
./bin/helloworld -conf ./configs/config.yaml
可以跑成功了。安装完成。
阅读更多其他优质go语言文章,欢迎关注公众号
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。