Kratos 开源项目教程
kratos项目地址:https://gitcode.com/gh_mirrors/kratos1/kratos
1. 项目的目录结构及介绍
Kratos 项目的目录结构如下:
kratos/
├── api/
│ ├── helloworld/
│ │ ├── v1/
│ │ │ ├── greeter.pb.go
│ │ │ ├── greeter.proto
│ │ │ └── greeter_grpc.pb.go
├── cmd/
│ ├── kratos/
│ │ └── main.go
├── configs/
│ ├── config.yaml
├── internal/
│ ├── biz/
│ │ └── biz.go
│ ├── data/
│ │ └── data.go
│ ├── server/
│ │ └── server.go
│ ├── service/
│ │ └── service.go
├── pkg/
│ ├── log/
│ │ └── log.go
├── go.mod
├── go.sum
└── README.md
目录结构介绍
api/
: 存放项目的 API 定义文件,包括 Protobuf 文件和生成的 Go 代码。cmd/
: 存放项目的启动文件,通常是main.go
。configs/
: 存放项目的配置文件,如config.yaml
。internal/
: 存放项目的内部逻辑代码,包括业务逻辑 (biz/
)、数据层 (data/
)、服务层 (service/
) 和 服务器配置 (server/
)。pkg/
: 存放项目的公共库代码,如日志 (log/
)。go.mod
和go.sum
: Go 模块文件,用于管理项目的依赖。README.md
: 项目的说明文档。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/kratos/main.go
。该文件主要负责初始化配置、日志、数据库连接等,并启动服务器。
package main
import (
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/config"
"github.com/go-kratos/kratos/v2/config/file"
"github.com/go-kratos/kratos/v2/log"
"github.com/go-kratos/kratos/v2/middleware/recovery"
"github.com/go-kratos/kratos/v2/transport/grpc"
"github.com/go-kratos/kratos/v2/transport/http"
"your_project/configs"
"your_project/internal/server"
"your_project/internal/service"
)
func main() {
logger := log.NewStdLogger(os.Stdout)
log := log.NewHelper(logger)
c := config.New(
config.WithSource(
file.NewSource("configs"),
),
)
if err := c.Load(); err != nil {
panic(err)
}
var bc configs.Bootstrap
if err := c.Scan(&bc); err != nil {
panic(err)
}
srv := service.NewService(bc, logger)
httpSrv := http.NewServer(
http.Address(bc.Server.HTTP.Addr),
http.Timeout(bc.Server.HTTP.Timeout),
http.Middleware(
recovery.Recovery(),
),
)
grpcSrv := grpc.NewServer(
grpc.Address(bc.Server.GRPC.Addr),
grpc.Timeout(bc.Server.GRPC.Timeout),
grpc.Middleware(
recovery.Recovery(),
),
)
if err := kratos.New(
kratos.Name(bc.Name),
kratos.Version(bc.Version),
kratos.Logger(logger),
kratos.Server(
httpSrv,
grpcSrv,
),
).Run(); err != nil {
log.Errorf("failed to run server: %v", err)
}
}
启动文件介绍
- 初始化