本地运行
单体启动
单体进程一次装配四个模块,适合本地开发与小规模部署:
bash
go run ./cmd/standalone # 监听 :8080启动后接口直接以模块前缀暴露:
- 登录:
POST http://localhost:8080/auth/login - 图形验证码:
GET http://localhost:8080/auth/code - 系统管理:
http://localhost:8080/system/...(如/system/user、/system/role) - 对象存储 / 推送:
http://localhost:8080/resource/...(推送端点/resource/message) - 监控:
http://localhost:8080/monitor/... - 活性探针:
GET http://localhost:8080/system/ping(免鉴权,不碰 DB/Redis)
多模块启动
每个模块编译成独立 binary、独立进程。 各模块统一监听 :8080(为容器化对齐,靠网络命名空间隔离端口),本机同时起多个需临时改 configs/<module>.yaml 的 addr,否则抢端口:
bash
go run ./cmd/modular/system # :8080 → /system/*、/ping
go run ./cmd/modular/auth # 改成 :8081 → /auth/*、/ping
go run ./cmd/modular/monitor # 改成 :8082 → /monitor/*、/ping
go run ./cmd/modular/resource # 改成 :8083 → /resource/*、/pingmodular 进程路由以 空前缀注册,探针统一为 GET /ping。生产环境由 nginx 按路径前缀分流并剥前缀(对齐 Java gateway StripPrefix=1),前端始终打 /auth、/system、/resource、/monitor 前缀路径。
探针
| 部署 | 探针路径 | 响应 |
|---|---|---|
| standalone | GET /system/ping | {"module":"system","message":"pong"} |
| modular | GET /ping | {"module":"<模块名>","message":"pong"} |
所有探针均免鉴权、不碰 DB/Redis,适合做健康检查。accesslog 的 skipPaths 可配 ping 这类高频零信息请求不打日志。
两种部署形态对比
| 维度 | standalone(单体) | modular(微服务) |
|---|---|---|
| 进程数 | 一个进程,in-process | 四个进程 |
| 前缀策略 | 进程内自带 /resource 前缀(等价于网关 StripPrefix=1 后的效果);保留 /auth、/system、/monitor 前缀 | 空前缀注册,/resource 由 nginx 剥离后匹配裸路径 |
| 推送路径 | /resource/message(直连) | /message(nginx 剥 /resource 后匹配) |
| 前端统一打 | 两种部署都打 /resource/message | |
| 端口 | :8080(独占) | 各模块统一 :8080(容器间网络命名空间隔离,本机调试需临时改) |
详见 架构总览 与 进程入口与初始化顺序。