
01 、介绍
Go 语言微服务框架 Kratos 是国内一款流行的 Go 语言微服务框架,本文我们一起重学 Kratos 的入门使用。
准备工作:
02 、创建项目
Go 语言微服务框架 Kratos 提供一个命令行工具,我们可以使用命令行工具快速创建项目,生成 proto 文件,生成 gRPC Client 和 gRPC Service 代码,运行项目等。
Kratos 官方提供了一个项目模板仓库,使用命令行工具创建项目时,默认使用官方提供的项目模板仓库。
当然,它也支持自定义项目模板,我们可以把自定义项目模板提交到 Git 仓库,使用命令行工具创建项目时,通过命令行参数 -r 指定自定义项目模板的 Git 仓库地址。
我们使用 Kratos 官方提供的项目模板仓库,如果读者朋友们想要使用自定义项目模板,可以自行折腾。
kratos new helloworld
🚀 Creating service helloworld, layout repo is https://github.com/go-kratos/kratos-layout.git, please wait a moment.
正克隆到 '/Users/frank/.kratos/repo/github.com/go-kratos/kratos-layout@main'...
CREATED helloworld/.gitignore (552 bytes)
CREATED helloworld/Dockerfile (459 bytes)
// ...
阅读上面这段代码,我们可以发现使用 kratos new helloworld 创建项目时,默认使用官方提供的项目模板仓库,同时还会将项目模板仓库克隆到 $HOME/.kratos/repo/github.com/go-kratos/kratos-layout@main。
如果我们再次创建项目时,命令行工具应该会默认使用克隆到本地的项目模板。所以,如果大家在更换项目模板后,发现没有生效,可以尝试删除克隆到本地的项目模板 rm -rf $HOME/.kratos。
需要注意的是,自定义项目模板中的
main.go需要存放在/cmd/server目录。不然命令行工具会报错,也可以在项目根目录创建.kratos/layout.yaml,在配置文件中cmd_dir写自定义项目模板中main.go存放的目录。不过有可能踩坑!!!建议新手直接使用 Kratos 官方提供的项目模板。
Kratos 官方提供的项目模板中的 go.mod 文件,可能和我们本地的 go 版本不一致,建议手动删除 go.mod,重新执行 go init helloworld 生成。
03 、初始化项目
创建项目后,我们需要初始化项目,Kratos 微服务框架使用依赖注入 wire,我们需要安装 wire(go get github.com/google/wire/cmd/wire@latest)。
除了直接使用 go get 方式安装 wire 之外,还有 2 种方式,分别是执行 Makefile 中定义的 make init,和运行 go generate 执行项目模板代码中的注释指令 //go:generate。
在项目模板中,文件 cmd/helloworld/wire_gen.go 中包含 //go:generate 注释指令:
// Code generated by Wire. DO NOT EDIT.
//go:generate go run -mod=mod github.com/google/wire/cmd/wire
//go:build !wireinject
// +build !wireinject
读者朋友们可以按照自己的习惯选择初始化项目的方式。
需要注意的是,正常情况下,该 3 种初始化项目的方式,都还需要进入 cmd/helloworld 目录中,执行 wire,生成 wire_gen.go 中的代码。
因为项目模板中,已包含 wire_gen.go 文件,并且该文件中的 //go:generate 注释指令,会执行 go run -mod=mod github.com/google/wire/cmd/wire,所以不再需要在 cmd/helloworld 目录中执行 wire。
04 、编译项目 & 运行项目
我们可以使用 go build 编译项目 go build -o ./bin/ ./...,执行二进制文件运行项目 ./bin/helloworld -conf ./configs。
也可以使用命令行工具 kratos run 直接运行项目。
05 、总结
本文从零开始讲述 Kratos 微服务框架是入门使用方式,目标是可以将项目中的示例代码 GreeterService.SayHello 方法成功运行。
读者朋友们想要新创建一个方法,可以参考「Go 语言微服务框架 Kratos 开发 HTTP API」这篇文章。
实际上,主要分为 5 步:
参考资料
[1]
安装 go: https://go.dev/doc/install
[2]
安装 protoc: https://protobuf.dev/downloads/
[3]
安装 protoc-gen-go: https://protobuf.dev/getting-started/gotutorial/
[4]
安装 kratos 命令行工具: https://go-kratos.dev/docs/getting-started/usage