go-layout 是 Firefly 微服务框架的 Go 版本标准项目模板。它提供了一套标准化的目录结构和基础设施配置,旨在帮助开发者快速构建规范的微服务应用。
本模板基于 go-micro(Firefly 微服务框架的 Go 版本核心库)构建。
默认启动链路为:读取 conf/bootstrap.json 和 conf/consul.json,通过 Consul Store 加载运行期配置,再以 go-consul/agent.Agent 托管业务 gRPC、management 端口和 sidecar-agent watch/replay 生命周期。config 数据面本身支持 watch/热更新,但 go-layout 默认模板当前只接入启动期加载,如需运行时热更新需要业务服务显式补充 Watcher 装配与组件重载策略。
-
Clone 项目
git clone https://github.com/fireflycore/go-layout.git my-project cd my-project -
重命名模块
使用提供的脚本将模块名(默认
go-layout)替换为你自己的模块名(例如github.com/myuser/my-project)。Windows:
.\rename_project.bat github.com/myuser/my-project
Linux / macOS:
chmod +x rename_project.sh ./rename_project.sh github.com/myuser/my-project
-
整理依赖
go mod tidy
-
准备配置
- 修改
conf/bootstrap.json,填写app、service、端口、sidecar-agent、logger 与 telemetry 基础信息。 - 修改
conf/consul.json,填写 Consul 地址、协议、数据中心与令牌。
- 修改
make generate: 执行buf generate并生成 DTOmake init: 执行生成链路、wire ./cmd/server和go mod tidymake run: 直接执行go run ./cmd/servermake build: 先执行make init,再注入构建信息并编译服务
- 启动托管:
App.Run(ctx)进入agent.Agent.Run(ctx),由 Agent 统一驱动gRPC + management + sidecar watch/replay。 - 服务注册:
internal/server/register.go基于agent.ServiceOptions + grpc.ServiceDesc组装agent.Agent。 - 管理端口:
internal/server/managed.go暴露/health、/ready、/info、/metrics,并在/ready、/info输出 sidecar 状态摘要。 - 服务上下文:gRPC 入口通过
gm.NewServiceContextUnaryInterceptor注入go-micro/service.Context,业务代码不再解析旧invocation.UserContextMeta。 - 远程调用:
internal/dep/client.go保留ConnectionManager / UnaryInvoker / RemoteServiceManaged模板,新增下游服务时集中登记invocation.DNS。