GoWindGoWind
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
Home
Framework
GoWind Toolkit
  • Open Source

    • GoWind Admin (Admin Platform)
    • GoWind CMS (Content Management)
    • GoWind UBA (Behavior Analytics)
    • GoWind Shop (E-commerce)
    • GoWind Kanban (Kanban Boards)
    • GoWind Ledger (Personal Finance)
    • GoWind ShortPlay (Short Drama)
    • GoWind Ops (Operations Platform)
    • RushWind (Rust Ecosystem)
  • Open Core (Community + Enterprise)

    • GoWind OA (Office Collaboration)
    • GoWind ERP (Procure-to-Pay)
    • GoWind WMS (Warehousing)
  • Commercial

    • GoWind IM (Instant Messaging)
    • GoWind IoT (IoT Platform)
    • GoWind Edu (AI Education)
    • GoWind MES (Manufacturing Execution)
    • GoWind CDC (Data Pipeline)
    • GoWind SDP (Zero-Trust Gateway)
    • GoWind Quant (Quant Research)
    • GoWind Trade Radar (Export Sourcing)
    • GoWind Game Radar (Game Greenlight)
  • 简体中文
  • English
GitHub
  • Introduction

    • GoWind UBA Product Introduction
  • Architecture Reference

    • UBA System Architecture
    • UBA Backend Module Overview
    • UBA Backend API Contract
    • UBA Frontend Architecture
  • Developer Guide

    • UBA Installation Guide
    • UBA Code Generation Pipeline Tutorial
    • Adding an External Service Tutorial
    • Adding a Business Entity Tutorial
    • Adding a Frontend Page Tutorial
  • Operations Guide

    • UBA Docker Deployment Guide
    • UBA Configuration Reference & Security Checklist
    • UBA PM2 Deployment Guide
    • UBA Superset BI Deployment Guide
  • Analyst Guide

    • Data Analyst Getting Started Guide
    • Basic Aggregation

      • Event Trend Analysis
      • Active Users Analysis
      • Group By Aggregation
    • Conversion & Paths

      • Funnel Analysis
      • Retention Analysis
      • Top Conversion Paths
      • Behavior Sequence Analysis
    • User Depth

      • Attribution Analysis
      • Distribution Analysis
      • User Segmentation
      • Click Heatmap
      • Interval Analysis
    • Lifecycle

      • User Lifecycle
      • Churn & Reactivation Analysis
      • New vs Returning Users
      • Matrix Quadrant Analysis
    • Revenue & Value

      • Revenue Analysis
      • Whale Tier (Payer Segmentation)
      • Historical LTV Analysis
    • Sessions & Anomalies

      • Session Analysis
      • Period-over-Period Comparison and Anomaly Detection
    • Gaming

      • Level Analysis (Game)
      • Server Retention (Game)
      • Online Stats Analysis (Game)
      • Economy Analysis (Game)
    • OLAP Cookbook
  • SDK Integration

    • Web SDK Integration Guide
    • C# SDK Integration Guide (Unity / Godot / .NET)
  • Appendix

    • UBA Appendix: Ports, Glossary, Known Limitations & FAQ

UBA Appendix: Ports, Glossary, Known Limitations & FAQ


1. Port Reference

Service / ComponentService listening portdocker-compose host mappingNotes
Admin Service REST56005600Same
Admin Service SSE56015601Same
Collector Service HTTP57005700Same
Core Service gRPCDynamic (etcd discovery)(not mapped)Discovered via etcd inside containers
PostgreSQL54325432Same
Redis63796379Same
Kafka90929092Accessed as kafka:9092 inside containers
Etcd2379, 23802379, 2380Same
MinIO API / Console9000 / 90019001 / 9002Same
Jaeger UI1668616686Same
Doris FE (MySQL / HTTP)9030 / 80309030, 8030, 9010Same
Doris BE8040, 90508040, 9050Same
Superset80888088Same

The docker-compose port mappings have been unified with the service listening ports (admin 5600/5601, collector 5700), so the host machine can access services directly via their listening ports. See Configuration Reference for details.


2. Glossary

TermMeaning
UBAUser Behavior Analytics
UEBAUser and Entity Behavior Analytics (an evolution of UBA, extended to entities such as devices/apps/endpoints)
CollectorIngestion BFF; receives SDK reports and forwards them to Kafka
CoreCore business service; ingestion/modeling/queries/risk/tags
AdminAdmin console BFF; HTTP gateway + SSE, thin forwarding
OLAPColumnar analytics engine; UBA supports Doris (default) or ClickHouse
events_factBehavior event fact table (core analytics data source)
sessions_factSession-level aggregated fact table
cohortA queue of users from the same period, used in retention analysis
appId / appSecretApplication-level authentication credentials, created in the admin console's "App Management"
tenantIdTenant ID; authoritatively identified server-side by appId, never reported by clients
super propertiesCommon properties; once set, every event carries them automatically
UseClickHouseCompile-time constant that decides the OLAP engine (false = Doris, the default)
AsynqRedis-based asynchronous task queue
Connect-RPCFrontend TypeScript API client protocol (generated from proto)

3. Known Limitations & Roadmap

This section honestly records the current state of the code, to help evaluate production readiness and plan secondary development.

Known Gaps

Note: Kafka consumption into storage is already a default capability and is not a gap. By default, the OLAP engine consumes Kafka via virtual tables (ClickHouse Kafka engine tables / Doris Routine Load) and loads the data; a microservice consumption interface is also reserved on the Core side, to be enabled when throughput is insufficient. See System Architecture · Kafka Consumption Mechanism.

ItemCurrent stateImpactPlanned direction
WAU / MAU hourly granularityDaily wau/mau already output as true values based on HLL rolling windows; only HOUR granularity degrades to equal DAU due to lack of hourly stateWeekly/monthly actives at hourly granularity are inaccuratePre-aggregate hourly uv state
Risk detection engineOnly storage/retrieval of risk events/rules is implemented (CRUD; queries like RiskEventService.Get are usable)No "events matching rules with automatic scoring"Implement a rule evaluation engine, wired to risk event generation

Database Consistency Reminders

  • docker-compose has unified POSTGRES_DB=gw_uba, consistent with dbname=gw_uba in the services' data.yaml.
  • The collector's data.yaml defaults kafka to 127.0.0.1:9092; change it to kafka:9092 for containerized deployment.
  • PostgreSQL table structures are generated by Ent (no hand-written schema.sql); sql/postgresql/ contains only seed/demo data.

Security Defaults (must be rotated)

  • JWT key some_api_key, AES key f51d66a73d8a0927.
  • Middleware passwords *Abcd123456, Doris root with empty password, Superset admin/admin.
  • CORS origins: ["*"], no TLS.

See Configuration Reference · Security Checklist for details.


4. FAQ

Q1: How much data can UBA handle?

A: Based on the Doris / ClickHouse columnar engines, it is designed to handle hundreds of millions of events. Actual throughput depends on the engine specs and the Kafka cluster.

Q2: How soon after reporting can data be queried?

A: Within seconds. After the Collector writes to Kafka, the OLAP engine's virtual tables (ClickHouse Kafka engine tables) / Routine Load (Doris) consume and load the data continuously; under normal conditions, data appears in events_fact within seconds. If data cannot be queried for a long time, first check whether the OLAP engine's consumption jobs (Routine Load status / materialized views) are running properly.

Q3: How do I switch between ClickHouse / Doris?

A: Modify the UseClickHouse constant in app/core/service/internal/data/data.go and recompile Core (this is not a runtime configuration).

Q4: Are there native iOS / Android SDKs?

A: Not currently. Only the Web SDK (TypeScript) and C# SDK (Unity/Godot/.NET) are available. Mobile games can use the C# SDK (Unity); purely native apps need to integrate directly via POST /uba/v1/report.

Q5: Is multi-tenancy supported?

A: Yes. tenantId is authoritatively identified and overridden server-side by appId; clients need not care about it, and isolation is natural.

Q6: How do I build custom BI reports?

A: Deploy Superset, connect to Doris's gw_uba database, and build dashboards on the fact tables. See Superset Deployment.

Q7: Why doesn't the frontend update after changing proto?

A: You forgot make ts and to manually sync the TS artifacts, or you forgot make wire. See Code Generation Pipeline.

Q8: Does ent fail to compile with missing Modify?

A: You used the wrong ent generation command (without feature flags). For the correct command, see Code Generation Pipeline · Ent Pitfalls.


5. Related Documentation

  • Product Introduction
  • System Architecture
  • Configuration Reference
  • Backend API Contract
Edit this page
Last Updated:: 11/3/26, 2:14 PM
Contributors: Bobo