Kratos v2 helloworld layout
核心依赖关系
主要依赖 (go.mod:8-14):
- github.com/go-kratos/kratos/v2 v2.8.0 - Kratos微服务框架
- github.com/google/wire v0.6.0 - 依赖注入工具
- go.uber.org/automaxprocs - 自动设置GOMAXPROCS
- google.golang.org/grpc - gRPC协议支持
- google.golang.org/protobuf - Protocol Buffers支持
启动流程
1. 主入口 (cmd/server/main.go:50-87):
flag.Parse() → 配置加载 → Wire依赖注入 → 启动应用
2. 详细启动步骤:
- 解析命令行参数,默认配置路径为 ../../configs
- 创建结构化日志器,包含链路追踪信息
- 加载 YAML 配置文件到 conf.Bootstrap 结构
- 通过 Wire 进行依赖注入,构建完整应用
- 启动 HTTP(8000) 和 gRPC(9000) 服务器
- 等待停止信号
3. Wire 依赖注入 (cmd/server/wire.go:21-23):
server.ProviderSet + data.ProviderSet + biz.ProviderSet + service.ProviderSet → kratos.App
分层架构
四层架构模式:
1. API层 (api/) - Protocol Buffers 定义的接口
2. Service层 (internal/service/) - 业务逻辑入口
3. Biz层 (internal/biz/) - 核心业务逻辑
4. Data层 (internal/data/) - 数据访问层
关键组件:
- Server层 (internal/server/) - HTTP/gRPC 服务器配置
- 配置管理 - 支持 MySQL + Redis 数据源
- 链路追踪 - 集成 OpenTelemetry
- API网关 - 同时支持 HTTP 和 gRPC 协议
这个架构遵循了清洁架构原则,通过 Wire 实现了松耦合的依赖注入,适合构建可扩展的微服务应用。