1. Home
  2. Docs
  3. golang
  4. 微服务-kratos

微服务-kratos

Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。

kratos new Aservice 生成后的目录结构

├── CHANGELOG.md 
├── OWNERS
├── README.md
├── api                     # api目录为对外保留的proto文件及生成的pb.go文件
│   ├── api.bm.go
│   ├── api.pb.go           # 通过go generate生成的pb.go文件
│   ├── api.proto
│   └── client.go
├── cmd
│   └── main.go             # cmd目录为main所在
├── configs                 # configs为配置文件目录
│   ├── application.toml    # 应用的自定义配置文件,可能是一些业务开关如:useABtest = true
│   ├── db.toml             # db相关配置
│   ├── grpc.toml           # grpc相关配置
│   ├── http.toml           # http相关配置
│   ├── memcache.toml       # memcache相关配置
│   └── redis.toml          # redis相关配置
├── go.mod
├── go.sum
└── internal                # internal为项目内部包,包括以下目录:
│   ├── dao                 # dao层,用于数据库、cache、MQ、依赖某业务grpc|http等资源访问
│   │   ├── dao.bts.go
│   │   ├── dao.go
│   │   ├── db.go
│   │   ├── mc.cache.go
│   │   ├── mc.go
│   │   └── redis.go
│   ├── di                  # 依赖注入层 采用wire静态分析依赖
│   │   ├── app.go
│   │   ├── wire.go         # wire 声明
│   │   └── wire_gen.go     # go generate 生成的代码
│   ├── model               # model层,用于声明业务结构体
│   │   └── model.go
│   ├── server              # server层,用于初始化grpc和http server
│   │   ├── grpc            # grpc层,用于初始化grpc server和定义method
│   │   │   └── server.go
│   │   └── http            # http层,用于初始化http server和声明handler
│   │       └── server.go
│   └── service             # service层,用于业务逻辑处理,且为方便http和grpc共用方法,建议入参和出参保持grpc风格,且使用pb文件生成代码
│       └── service.go
└── test                    # 测试资源层 用于存放测试相关资源数据 如docker-compose配置 数据库初始化语句等
    └── docker-compose.yaml

goland开发配置

需要启动配置参数(在没有配置中心前)

## 相关资料

官网

github-kratos

kratos-文档

kratos常见问题与工具包

FQA

创建项目出现错误 undefined: DemoClient ?

E:\workdspace1\go\src\kratos-demo\cmd>go build
# kratos-demo/api
..\api\client.go:15:68: undefined: DemoClient
..\api\client.go:21:9: undefined: NewDemoClient

需要的组件已安装还是出现问题, 官方去里的反馈是 kratos new 的demo库没有更新?

当有新版本发布如何更新呢?

如何回退到之前的版本?

查看当前版本

jw@jianwei kratos (main) $ kratos -v
kratos version v2.0.0-rc1

开始回退指定版本

如何部署项目?

如何划分服务?

Articles

Was this article helpful to you? Yes No

How can we help?