首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go 语言微服务框架 Kratos 入门使用

Go 语言微服务框架 Kratos 入门使用

作者头像
frank.
发布2025-08-09 16:32:48
发布2025-08-09 16:32:48
3620
举报

01 、介绍

Go 语言微服务框架 Kratos 是国内一款流行的 Go 语言微服务框架,本文我们一起重学 Kratos 的入门使用。

准备工作:

  1. 安装 go[1]
  2. 安装 protoc[2]
  3. 安装 protoc-gen-go[3]
  4. 安装 kratos 命令行工具[4]

02 、创建项目

Go 语言微服务框架 Kratos 提供一个命令行工具,我们可以使用命令行工具快速创建项目,生成 proto 文件,生成 gRPC Client 和 gRPC Service 代码,运行项目等。

Kratos 官方提供了一个项目模板仓库,使用命令行工具创建项目时,默认使用官方提供的项目模板仓库。

当然,它也支持自定义项目模板,我们可以把自定义项目模板提交到 Git 仓库,使用命令行工具创建项目时,通过命令行参数 -r 指定自定义项目模板的 Git 仓库地址。

使用命令行工具创建项目

我们使用 Kratos 官方提供的项目模板仓库,如果读者朋友们想要使用自定义项目模板,可以自行折腾。

代码语言:javascript
复制
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,我们需要安装 wirego 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 注释指令:

代码语言:javascript
复制
// 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. 创建 proto 文件;
  2. 生成 gRPC Client 和 gRPC Service 代码;
  3. 注册 HTTP 服务或 gRPC 服务;
  4. 执行 wire 生成依赖注入代码;
  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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言开发栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用命令行工具创建项目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档