Skip to content

11.2 环境规划 ​

概述

推荐三套环境(开发/测试/生产)+ 环境差异经 GF_ 环境变量覆盖(不改配置文件)。本节给出环境矩阵、资源配置参考与拓扑。

环境矩阵 ​

环境用途后端数据库Redis
开发 dev本地开发go run / bin本地 MySQL本地 Redis
测试 test联调/冒烟独立部署独立库独立实例/db
生产 prod对外服务多实例可选主从/云 RDS集群/云 Redis

部署拓扑 ​

text
                 ┌──────────────────────────────────────────┐
                 │              生产网络(内网)              │
  用户 ──443──▶  │  nginx/前置代理(HTTPS 终止 + 静态 + 反代) │
                 │    │                                       │
                 │    ├── admin-server ×N(:8000,优雅重启)   │
                 │    ├── MySQL 主从(或云 RDS)               │
                 │    └── Redis(集群/云,密码强记)           │
                 └──────────────────────────────────────────┘
  文件:uploadDir 独立持久卷/共享存储(多实例需共享或对象存储改造)
  归属地:manifest/data/ip2region.xdb 随二进制分发

环境差异管理(GF_ 覆盖) ​

sh
# 容器/进程管理器注入环境变量,不改配置文件
GF_DATABASE_DEFAULT_LINK="mysql:user:secret@tcp(db:3306)/easygoadmin?charset=utf8mb4&parseTime=true"
GF_REDIS_DEFAULT_ADDRESS="redis:6379"
GF_JWT_SECRET="prod-only-random-secret"
GF_APP_ERRORMSG="false"

原则:同份二进制 + 不同环境变量 = 不同环境;密钥类只走环境变量(不进配置文件/镜像层)。

资源配置参考 ​

环境CPU内存磁盘说明
开发2 核4 GB50 GB本机 MySQL/Redis 共享
测试2 核4 GB100 GB独立服务
生产(中小)4 核8 GB200 GB+单实例 + 数据库独立
生产(多实例)2 核 × N4 GB × N—Redis 必须可用(限流/锁共享)

多实例注意事项 ​

text
必须共享 Redis(否则以下能力退化单机语义):
  限流计数 / 任务执行锁(job:lock)/ JWT 黑名单 / 在线用户 / 验证码 / 字典缓存

上传目录:多实例需共享存储(NFS/OSS 改造)——两段式 Rename 在共享卷语义下正常
定时任务:策略 2/3 经 Redis 锁互斥(各实例都会 tick,抢锁失败放弃)
数据库连接池:按实例数 × pool 配置核算数据库 max_connections

时区与时间 ​

text
app.timezone: "Asia/Shanghai"    应用时区
数据库连接 loc=Local / 服务器时区保持一致
定时任务 cron 按应用时区调度——跨时区部署注意

小蚂蚁云团队 · 提供技术支持