Skip to content

配置说明

后端配置由 Viper 加载,支持三种来源,优先级从低到高:

  1. 配置文件conf/app.toml(默认)、conf/app.local.toml(本地覆盖)、conf/app.docker.toml(容器内,通过 VISTACK_CONFIG_PATH 指定);
  2. 环境变量VISTACK_ 前缀覆盖,如 VISTACK_DATABASE_HOST=...
  3. 命令行 / 角色参数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.tomlDocker 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(批量越大落库越省,但延迟越高)。

基于 MIT License 发布