Kratos 开源项目教程

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.modgo.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)
    }
}

启动文件介绍

  • 初始化

kratos项目地址:https://gitcode.com/gh_mirrors/kratos1/kratos

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田慧娉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值