Micro-Starter-Kit 项目教程
1. 项目的目录结构及介绍
Micro-Starter-Kit 是一个用于构建云原生 GoLang 微服务的开源项目。以下是项目的目录结构及其介绍:
micro-starter-kit/
├── cmd/
│ ├── demo/
│ │ └── main.go
│ └── emailer/
│ └── main.go
├── config/
│ ├── config.dev.yaml
│ └── config.prod.yaml
├── internal/
│ ├── service/
│ │ └── service.go
│ └── repository/
│ └── repository.go
├── pkg/
│ ├── logger/
│ │ └── logger.go
│ └── utils/
│ └── utils.go
├── Makefile
├── go.mod
├── go.sum
└── README.md
目录结构介绍
-
cmd/: 包含项目的启动文件,每个子目录对应一个微服务。
- demo/: 包含
demo
服务的启动文件main.go
。 - emailer/: 包含
emailer
服务的启动文件main.go
。
- demo/: 包含
-
config/: 包含项目的配置文件,如开发环境和生产环境的配置文件。
- config.dev.yaml: 开发环境的配置文件。
- config.prod.yaml: 生产环境的配置文件。
-
internal/: 包含项目的内部逻辑代码。
- service/: 包含服务的业务逻辑代码。
- repository/: 包含数据访问层的代码。
-
pkg/: 包含项目的公共库代码。
- logger/: 包含日志相关的代码。
- utils/: 包含工具类代码。
-
Makefile: 包含项目的构建和运行命令。
-
go.mod 和 go.sum: Go 模块依赖文件。
-
README.md: 项目的说明文档。
2. 项目的启动文件介绍
项目的启动文件位于 cmd/
目录下,每个子目录对应一个微服务。以下是 demo
服务的启动文件 main.go
的介绍:
package main
import (
"flag"
"log"
"os"
"github.com/xmlking/micro-starter-kit/internal/service"
"github.com/xmlking/micro-starter-kit/pkg/logger"
)
func main() {
// 解析命令行参数
var configFile string
flag.StringVar(&configFile, "configFile", "config.dev.yaml", "配置文件路径")
flag.Parse()
// 初始化日志
logger.Init()
// 加载配置文件
config, err := service.LoadConfig(configFile)
if err != nil {
log.Fatalf("加载配置文件失败: %v", err)
}
// 启动服务
srv := service.NewService(config)
if err := srv.Run(); err != nil {
log.Fatalf("服务启动失败: %v", err)
}
}
启动文件介绍
- 命令行参数解析: 使用
flag
包解析命令行参数,支持通过--configFile
指定配置文件路径。 - 日志初始化: 初始化日志系统,使用
pkg/logger
包。 - 配置文件加载: 加载配置文件,使用
internal/service
包中的LoadConfig
函数。 - 服务启动: 创建并启动服务,使用
internal/service
包中的NewService
和Run
函数。
3. 项目的配置文件介绍
项目的配置文件位于 config/
目录下,包含开发环境和生产环境的配置文件。以下是 config.dev.yaml
的介绍:
server:
address: "localhost:55012"
broker_address: "localhost:55022"
database:
host: "127.0.0.1"
port: 5432
username: "user"
password: "password"
name: "dev_db"
logging:
level: "debug"
output: "stdout"
配置文件介绍
-
server: 配置服务的地址和消息代理地址。
- address: 服务监听的地址。
- broker_address: 消息代理的地址。
-
database: 配置数据库连接信息。
- host: 数据库主机地址。
- port: 数据库端口。
- username: 数据库用户名。
- password: 数据库密码。
- name: 数据库名称。
-
logging: 配置日志系统。
- level: 日志级别,如
debug
,info
,error
等。 - output: 日志输出方式,如
stdout
,file
等。
- level: 日志级别,如
通过以上配置文件,可以灵活地配置服务的运行环境,满足不同场景的需求。