配置说明
后端配置由 Viper 加载,支持三种来源,优先级从低到高:
- 配置文件:
conf/app.toml(默认)、conf/app.local.toml(本地覆盖)、conf/app.docker.toml(容器内,通过VISTACK_CONFIG_PATH指定); - 环境变量:
VISTACK_前缀覆盖,如VISTACK_DATABASE_HOST=...; - 命令行 / 角色参数:
VISTACK_ROLE或首个位置参数决定启动角色。
bash
# 指定配置文件启动
VISTACK_CONFIG_PATH=conf/app.docker.toml go run ./cmd/vistack api
# 环境变量覆盖单个配置项
VISTACK_DATABASE_HOST=db.internal VISTACK_REDIS_HOST=redis.internal go run ./cmd/vistack worker角色选择
三个角色通过 VISTACK_ROLE(或启动命令首个位置参数)选择:api / worker / transcoder / auth / migrate。
配置段一览
| 配置段 | 说明 | 关键字段 |
|---|---|---|
[server] | HTTP 监听地址/端口 | host / port / mode |
[database] | PostgreSQL 连接 | host / port / user / password / name / 连接池 |
[redis] | Redis 连接 | host / port / db / password / pool_size |
[minio] | 对象存储 | endpoint / public_endpoint / access_key / secret_key / bucket |
[kafka] | 消息队列 | brokers / group_id / concurrency |
[etcd] | 服务发现与选举 | endpoints / prefix / leader_ttl |
[transcoder] | gRPC 转码 | listen_addr / addr / use_etcd |
[auth] | JWT 配置 | kid / issuer / jwt_expiration / jwks_path |
[auth_service] | Auth 服务地址 | http_addr / grpc_addr / jwks_url |
[cache] | Redis 缓存层 | TTL 范围 / 空值 TTL / 锁 TTL / 布隆参数 |
[ratelimit] | 接口限流 | enabled / algorithm / token_rate / token_burst / window / limit |
[social] | 点赞/收藏/播放量 | enabled / flush_interval / flush_batch / leaderboard_size |
[danmaku] | 弹幕 | enabled / local_cache_size / local_cache_ttl |
[comment] | 评论 | enabled / flush_interval / flush_batch |
[snowflake] | ID 生成 | node_id(0 = 自动派生) |
[cors] | 跨域 | allow_origins / allow_methods / allow_headers |
三份配置文件的分工
| 文件 | 适用场景 | 中间件地址 |
|---|---|---|
conf/app.toml | 本机开发默认 | localhost 直连(MinIO 默认 localhost:2591) |
conf/app.local.toml | 本机个性化覆盖 | 同 app.toml,可覆盖密钥等 |
conf/app.docker.toml | Docker Compose / K8s 容器内 | 服务名(postgres / redis / minio / kafka / etcd) |
环境变量模板(.env.example)
compose.yml 中的基础设施通过 env_file: .env.local 读取环境变量,模板见 .env.example:
bash
# 数据库配置
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=postgres
POSTGRES_PORT=5432
# Redis 配置
REDIS_PASSWORD=redis
REDIS_DB=redis
REDIS_PORT=6379
# Minio 配置
MINIO_ROOT_PASSWORD=minioadmin
MINIO_ROOT_USER=minioadmin
MINIO_WEB_PORT=9000
MINIO_API_PORT=9001
# Kafka
KAFKA_PORT=9092
# JWT 密钥(生产环境务必改为随机长串)
JWT_SECRET=vistack-dev-secret-change-me应用侧 JWT 密钥通过
VISTACK_AUTH_JWT_SECRET覆盖;Auth 服务的 RSA 私钥通过VISTACK_AUTH_RSA_PRIVATE_KEY(PEM 字符串)或VISTACK_AUTH_RSA_PRIVATE_KEY_FILE(文件路径)注入,缺失时自动生成临时密钥(仅限开发)。
Auth 服务密钥注入
bash
# 生成 RSA 私钥(一次性)
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
# 注入到容器
VISTACK_AUTH_RSA_PRIVATE_KEY_FILE=/run/secrets/private.pem docker compose up -d auth常见调优
- 转码并发:提高
[kafka].concurrency(worker 并发消费者数)+ 扩容 transcoder 副本; - 缓存强度:
[cache]中调整随机 TTL 范围、空值 TTL、布隆过滤器 bits/hashes; - 限流阈值:
[ratelimit]中切换token_bucket/sliding_window算法并调整阈值; - 计数落库节奏:
[social]/[comment]中调整flush_interval/flush_batch(批量越大落库越省,但延迟越高)。
