初识微服务框架 kratos | 青训营笔记

925 阅读3分钟

文章第一句话为“这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

前言

项目选型中参考了 kratos,因此做一个记录

一、简介:

Kratos

Kratos 是一款面向 Go 语言的微服务框架,由 Bilibili 开发和维护。它专注于解决微服务开发中的常见问题,如服务注册与发现、负载均衡、限流、熔断等,同时提供了一些有用的特性,如易于测试、可扩展性和高性能等。

Kratos 框架的核心特性

标准化:遵循 Go 语言的标准库设计模式,同时也遵循 gRPC、Protobuf 等行业标准。

简单易用:提供简单易用的 API 接口和组件,同时也支持开箱即用的方式,简化了微服务开发过程。

高性能:采用 goroutine、channel 等高性能的 Go 语言特性,并且也支持异步 IO 和多协程并发处理等方式,以提高微服务的性能。

可扩展性:提供许多可扩展的组件,如自定义中间件、自定义错误码、自定义协议等,以满足各种微服务的需求。

测试友好:提供 Mock 接口和单元测试等功能,方便开发者进行测试。

二、涉及技术&知识点:

本文内容

  • kratos 开发环境的搭建
  • 输出 Hello World

三、实践过程:

开发工具

  • Visual Studio Code
  • Goland(推荐)

这里链接我以前的文章,感兴趣的可以去看看:梦的开始:走进Go语言基础语言(万字总结) | 青训营笔记

安装Golang

相关链接:

Golang官网go.dev/
Go语言中文网:studygolang.com/dl
七牛云:goproxy.cn/

打开golang官网,下载golang的二进制文件进行安装即可

image.png 如果无法打开官网,也可以使用Go语言中文网提供的镜像下载安装

image.png 安装完成后,如果遇到第三方包无法安装,可以尝试使用七牛云提供的镜像

image.png 对于开发环境的搭建,可以参考:

练习 - 安装 Go - Training | Microsoft Learn

练习 - 安装 Visual Studio Code 和 Go 扩展 - Training | Microsoft Learn

Tips上文开发环境的搭建使用的软件是Visual Studio Code,如果不想使用,或者嫌装插件太麻烦,可以使用JetBrains公司开发的IDE(集成开发环境):GoLand,可省去不少步骤

image.png

GoLand是一个商业付费软件,你可以免费试用30天再决定是否购买。同时,如果你是在校学生,或者你维护着一个开源仓库,你可以向JetBrains公司申请免费试用,这里不再赘述。 相关链接:

学生免费申请:www.jetbrains.com/zh-cn/commu…
开源仓库:www.jetbrains.com/zh-cn/commu…

开发环境搭建

CLI工具

安装

go install github.com/go-kratos/kratos/cmd/kratos/v2@latest

protoc & protoc-gen-go安装

源代码安装

  • protoc安装
  • protoc-gen-go/protoc-gen-go-grpc 安装
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

创建项目

通过 kratos 命令创建项目模板:

kratos new helloworld
image.png

使用 -r 指定源

# 国内拉取失败可使用gitee源
kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git
# 亦可使用自定义的模板
kratos new helloworld -r xxx-layout.git
# 同时也可以通过环境变量指定源
KRATOS_LAYOUT_REPO=xxx-layout.git
kratos new helloworld

使用 -b 指定分支

kratos new helloworld -b main

使用 --nomod 添加服务,共用 go.mod ,大仓模式

kratos new helloworld
cd helloworld
kratos new app/user --nomod

运行项目:

kratos run
image.png image.png

代码分析

四、总结思考:

protoc-gen-go安装失败,参考:常见错误处理 | go-zero

五、 引用参考: