GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • 介绍

    • GoWind UBA 产品介绍
  • 架构参考

    • UBA 系统架构
    • UBA 后端模块总览
    • UBA 后端 API 契约
    • UBA 前端架构
  • 开发者指南(二开)

    • UBA 安装指南
    • UBA 代码生成管线教程
    • 新增对外服务教程
    • 新增业务实体教程
    • 新增前端页面教程
  • 运维指南

    • UBA Docker 部署指南
    • UBA 配置详解与安全清单
    • UBA PM2 部署指南
    • UBA Superset BI 部署指南
  • 数据分析师指南

    • 数据分析师上手指南
    • 基础聚合

      • 事件趋势分析
      • 活跃用户分析
      • 维度分组聚合
    • 转化与路径

      • 漏斗分析
      • 留存分析
      • 热门转化路径
      • 行为序列分析
    • 用户深度

      • 归因分析
      • 分布分析
      • 用户分群圈选
      • 点击热力图
      • 间隔时间分析
    • 生命周期

      • 用户生命周期
      • 流失与回流分析
      • 新老用户对比
      • 矩阵象限分析
    • 营收与价值

      • 营收分析
      • 付费分层(鲸鱼分析)
      • 历史 LTV 分析
    • 会话与异常

      • 会话分析
      • 同比环比与异常检测
    • 游戏专属

      • 关卡分析(游戏)
      • 滚服留存(游戏)
      • 同时在线分析(游戏)
      • 经济系统分析(游戏)
    • OLAP 查询手册
  • SDK 接入

    • Web SDK 接入指南
    • C# SDK 接入指南(Unity / Godot / .NET)
  • 附录

    • UBA 附录:端口、术语、已知限制与 FAQ

UBA 配置详解与安全清单

本文档面向运维人员,详解三大服务的配置文件、OLAP 引擎切换、JWT 认证、端口对照,并给出生产部署前必须处理的安全清单。

先读 系统架构。配置文件在各服务的 configs/ 目录下,按功能拆分为多个 YAML。


一、配置文件总览

每个服务目录 app/<svc>/service/configs/ 下:

文件作用coreadmincollector
server.yaml服务监听端口、中间件、SSE、Swagger✓(grpc/asynq)✓(rest/sse)✓(rest)
data.yaml数据源(DB/Redis/Kafka/OLAP)✓✓(仅 redis)✓(redis/kafka)
registry.yaml服务发现(etcd / consul)✓✓✓
remote.yaml远程 gRPC 发现配置—✓✓
client.yamlgRPC 客户端✓✓✓
authenticator.yamlJWT 双 profile✓——
oss.yaml对象存储(MinIO)✓✓—
logger.yaml / trace.yaml日志 / 链路追踪✓✓✓

二、服务监听端口(server.yaml)

Core Service(app/core/service/configs/server.yaml)

server:
  grpc:
    addr: "0.0.0.0:0"          # 动态端口,启动时注册到 etcd
    timeout: 10s
    middleware: { enable_logging: true, enable_recovery: true, enable_tracing: true,
                  enable_validate: true, enable_circuit_breaker: true, enable_metadata: true }
  asynq:
    uri: "redis://:*Abcd123456@redis:6379/1"   # 异步任务队列

Admin Service(app/admin/service/configs/server.yaml)

server:
  rest:
    addr: "0.0.0.0:5600"        # HTTP REST
    timeout: 10s
    enable_swagger: true
    cors: { origins: ["*"], methods: [...], headers: [...] }
    middleware:
      auth: { method: "HS256", key: "some_api_key" }
  sse:
    addr: ":5601"               # SSE 实时推送
    codec: "json"
    path: "/events"
    auto_stream: true

Collector Service(app/collector/service/configs/server.yaml)

server:
  rest:
    addr: "0.0.0.0:5700"        # HTTP 上报入口
    timeout: 10s
    enable_swagger: true
    cors: { ... }
    middleware:
      auth: { method: "HS256", key: "some_api_key" }

⚠️ 端口对照表

服务服务监听端口(YAML)docker-compose 宿主映射说明
Admin REST56009700不一致,需统一
Admin SSE56019701不一致,需统一
Collector HTTP57009800, 9801不一致,需统一
Core gRPC动态(etcd 发现)(不映射)容器内通过 etcd 发现
Doris FE9030(MySQL)/8030(HTTP)9030, 8030, 9010一致
Postgres54325432一致
Redis63796379一致
Kafka90929092容器内用 kafka:9092
MinIO9000/90019001/9002一致
Jaeger UI1668616686一致
Superset80888088一致

生产化时,建议把 compose 映射改为与服务监听一致(如 5600:5600),或在服务 server.yaml 里对齐端口。


三、数据源配置(data.yaml)

Core Service(数据中枢)

database:                      # PostgreSQL(业务/配置实体)
  driver: postgres
  dsn: "host=postgres port=5432 user=postgres password=*Abcd123456 dbname=gw_uba sslmode=disable"
  migrate: true                # 启动时按 ent schema 自动建表
  maxIdleConns: 25
  maxOpenConns: 25
  connMaxLifetime: 300s

redis: { addr: "redis:6379", password: "*Abcd123456" }

clickhouse:                    # ClickHouse(UseClickHouse=true 时生效)
  addrs: ["localhost:9000"]
  database: gw_uba
  compression: lz4

doris:                         # Doris(默认引擎)
  dsn: "root:@tcp(localhost:9030)/gw_uba"
  stream_load:                 # 批量导入
    url: "http://localhost:8040/api/gw_uba/_stream_load"
    user: root
    timeout: 30s

Collector Service

redis: { addr: "redis:6379", password: "*Abcd123456" }
kafka:
  codec: json
  endpoints: ["127.0.0.1:9092"]   # ⚠️ 容器内部署改为 kafka:9092

Admin Service

redis: { addr: "redis:6379", password: "*Abcd123456" }

Admin 是无状态转发层,除 Redis 缓存外不直接连 DB/OLAP。


四、OLAP 引擎切换(UseClickHouse)

引擎由编译期常量决定,不是 YAML 配置:

// backend/app/core/service/internal/data/data.go
// UseClickHouse 是否使用ClickHouse作为数据存储,否则使用Doris。
const UseClickHouse bool = false   // 当前默认 false → 使用 Apache Doris
  • false(默认):实例化 Doris client,ClickHouse client 置空。
  • true:切换为 ClickHouse,需重新编译 Core。

repo 层按此常量分支:if data.UseClickHouse { ckRepo } else { dorisRepo }。两种引擎共用同一份业务模型(schema 镜像),SQL 按方言略有差异(见 OLAP 查询手册)。


五、服务发现(registry.yaml)

三服务的 registry.yaml 一致:

registry:
  type: "etcd"                 # 当前用 etcd(consul 配置存在但未启用)
  etcd: { endpoints: ["localhost:2379"] }
  consul: { address: "localhost:8500", scheme: "http" }   # 未启用

容器化部署时,etcd endpoints 应改为 etcd:2379。


六、认证(authenticator.yaml)

仅 Core 有 authenticator.yaml,定义两个 JWT profile(HS256):

auth:
  admin:                       # 管理后台
    key: "some_api_key"        # ⚠️ 必须轮换
    accessTokenTTL: 5400s      # 1.5 小时
    refreshTokenTTL: 43200s    # 12 小时
    aesKey: "f51d66a73d8a0927" # ⚠️ 必须轮换
  collector:                   # 采集/移动端
    key: "some_api_key"
    accessTokenTTL: 900s       # 15 分钟
    refreshTokenTTL: 0s        # 禁用刷新
    aesKey: "f51d66a73d8a0927"

七、🔒 生产安全清单(务必执行)

以下均为开发默认值,生产部署前必须全部轮换:

项默认值(危险)处理
JWT 签名 keysome_api_key替换为强随机串
JWT AES keyf51d66a73d8a0927替换为强随机串
PostgreSQL 密码*Abcd123456替换
Redis 密码*Abcd123456替换
MinIO root 密码*Abcd123456替换
Doris root(空密码)设置强密码
Superset adminadmin/admin改密码 + 改 SUPERSET_SECRET_KEY
CORS origins["*"]收敛到实际域名
TLS无反向代理(Nginx)加 TLS

建议:用环境变量或配置中心(etcd,见 make export 的 cfgexp)注入密钥,不要把生产密钥写进 YAML 或镜像。


八、相关文档

  • 系统架构
  • Docker 部署
  • PM2 部署
  • 附录 · 端口对照表
Edit this page
Last Updated:: 6/29/26, 12:03 AM
Contributors: Bobo
Prev
UBA Docker 部署指南
Next
UBA PM2 部署指南