Go-Kratos 示例项目教程

Go-Kratos 示例项目教程

1. 项目的目录结构及介绍

Go-Kratos 示例项目的目录结构如下:

examples/
├── README.md
├── api
│   └── helloworld
│       ├── helloworld.pb.go
│       ├── helloworld.proto
│       └── helloworld_grpc.pb.go
├── cmd
│   └── helloworld
│       └── main.go
├── configs
│   └── config.yaml
├── go.mod
├── go.sum
└── internal
    └── service
        └── service.go

目录结构介绍

  • api: 存放项目的API定义文件,包括.proto文件及其生成的.go文件。
  • cmd: 存放项目的启动文件,通常包含main.go
  • configs: 存放项目的配置文件,如config.yaml
  • internal: 存放项目的内部实现,如服务实现文件。
  • go.modgo.sum: Go模块文件,用于管理项目的依赖。

2. 项目的启动文件介绍

项目的启动文件位于cmd/helloworld/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"
    "helloworld/internal/service"
)

func main() {
    logger := log.NewStdLogger(os.Stdout)
    log := log.NewHelper(logger)

    c := config.New(
        config.WithSource(
            file.NewSource("configs/config.yaml"),
        ),
    )
    if err := c.Load(); err != nil {
        panic(err)
    }

    var bc conf.Bootstrap
    if err := c.Scan(&bc); err != nil {
        panic(err)
    }

    srv := service.NewHelloService()

    httpSrv := http.NewServer(
        http.Address(bc.Server.Http.Addr),
        http.Timeout(bc.Server.Http.Timeout),
    )
    grpcSrv := grpc.NewServer(
        grpc.Address(bc.Server.Grpc.Addr),
        grpc.Timeout(bc.Server.Grpc.Timeout),
    )

    app := kratos.New(
        kratos.Name("helloworld"),
        kratos.Version("latest"),
        kratos.Logger(logger),
        kratos.Server(httpSrv, grpcSrv),
    )
    if err := app.Run(); err != nil {
        log.Errorf("failed to run app: %v", err)
    }
}

启动文件介绍

  • 配置加载: 使用config.Newfile.NewSource加载配置文件configs/config.yaml
  • 日志初始化: 初始化日志记录器。
  • 服务初始化: 初始化服务实例。
  • HTTP和gRPC服务器配置: 配置HTTP和gRPC服务器,并将其添加到应用中。
  • 应用启动: 使用kratos.New创建应用实例并启动。

3. 项目的配置文件介绍

项目的配置文件位于configs/config.yaml。以下是该文件的主要内容:

server:
  http:
    addr: ":8000"
    timeout: 1s
  grpc:
    addr: ":9000"
    timeout: 1s

配置文件介绍

  • HTTP服务器配置: 配置HTTP服务器的地址和超时时间。
  • gRPC服务器配置:

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值