wx

关注公众号领取Go学习资料

wx

洋葱小店

wx

LUCA

00:初始化项目


安装kratos及相关工具

1、kratos 安装


go install github.com/go-kratos/kratos/cmd/kratos/v2@latest
kratos -v
# kratos version v2.6.2
2、wine 安装

go install github.com/google/wire/cmd/wire@latest
3、安装 protoc 及 protoc-gen-go

4、安装 buf buf是一个用于管理和构建Protocol Buffers(protobuf)定义文件的命令行工具。它提供了一种简单而强大的方式来验证、格式化和构建protobuf定义文件,以及生成相关的代码。


go install github.com/bufbuild/buf/cmd/buf@v1.23.1
buf --version

创建项目

使用 kratos new 命令创建并启动一个hello world 项目:


kratos new kratos-admin

cd kratos-admin

// 下载相关依赖
go mod tidy
// 构建
go get github.com/google/wire/cmd/wire@latest
go generate ./...
// 运行项目
kratos run
至此我们已经将一个kratos 项目的骨架搭建好了,运行成功后可以访问:http:127.0.0.1:8000/helloworld/beginner 将会得到以下结果:

{
    "message": "Hello beginner"
}
接下来我们看一下该项目下的结构

目录结构与介绍

  • api 下面维护了微服务使用的proto文件以及根据它们所生成的go文件;如果proto文件比较多,可以将proto文件和生产的go文件分目录存放,比如proto目录存放proto源文件,proto上层目录存生成文件
  • cmd 服务启动的入口文件
  • configs 配置文件;一般用来本地调试,生产建议使用配置文件管理工具
  • internal 业务逻辑代码,使用internal避免错误引用
  • internal/biz 业务逻辑的组装层
  • internal/conf 内部使用的config的结构定义,使用proto格式生成
  • internal/data 业务数据访问,包含 cache、db 等封装,实现了 biz 的 repo 接口
  • internal/server http和grpc实例的创建和配置
  • internal/service 实现了 api 定义的服务层
  • internal/biz 业务逻辑的组装层
  • third_party api 依赖的第三方proto

从main.go 开始

打开 cmd/kratos-admin/main.go;如果你是使用Goland编辑器,第一次打开你能会有一个错误提示:找不到wireApp 方法,需要按照下图设置一下。 image.png

wireinject 是一个构建约束的标记,用于使用 github.com/google/wire 进行依赖注入的代码文件。在使用 wire 生成依赖注入代码时,会在生成的代码文件中添加 // +build wireinject 注释,以标记该文件是由 wire 工具生成的。wire 文档 https://github.com/google/wire/blob/main/docs/guide.md

main.go 中的逻辑大致分为 部分:

  • 接收命令参数
  • 创建日志对象 Logger
  • 读取配置文件
  • 创建 *kratos.App 并启动;其中 wireApp 方法有wire自动生成,生成代码在wire_gen.go。
如有疑问关注公众号给我留言
wx

关注公众号领取Go学习资料

wx

洋葱小店

wx

LUCA

©2017-2023 鲁ICP备17023316号-1 Powered by Hugo