架构概览
本文是愿景与方向;当前已落地的服务边界、端口、网关反代拓扑与数据流 见同目录
topology.zh.md(现状文档,冲突时以现状文档为准)。
目标
把游戏库、攻略、社区、战绩、组队做成一个平台,覆盖 Web/App/小程序。后台和自动化随后续阶段补。
系统分层
- 体验层(apps/):Web、移动、后台、小程序端统一使用设计系统与状态管理,经 BFF/REST 访问后端服务(GraphQL 未实现),并与实时通道(WebSocket/RTC)交互。
- 业务服务层(services/):按领域拆分微服务,经网关暴露 API,共享数据模型与配置。
- 数据与实时层:data-panel、crawler-jobs、实时推送服务负责抓取、计算与实时同步。
- 平台支撑层(platform/):基础设施、CI/CD、可观测性配置都放这里。
核心模块
- User & Social(
user-service、community、matchmaking):账号、好友、动态、组队、语音/文字沟通。 - Content & CMS(
content-service、admin-console):攻略/资讯创作、审核、活动配置。 - Game Catalog & Discovery(
game-catalog、web-client):游戏库、榜单、标签、推荐 feed。 - Data Panel(
data-panel、mobile-app):战绩抓取、角色/装备统计、玩家档案。 - Automation(
crawler-jobs、tools/脚本):自动同步外部商店数据、赛事信息、公告。
数据流与交互
- 数据输入:crawler-jobs 从官方商店/赛事/公告抓取数据,写入数据仓库或缓存;data-panel 通过官方 API 或合作接口获取战绩数据。
- 处理:game-catalog/content-service/community 按数据模型落库(SQLite/MySQL 双驱动;Postgres/ElasticSearch 为候选),榜单和推荐由服务内查询与跨服务调用实现(Kafka/PubSub 等消息总线为候选)。
- 输出:api-gateway 把聚合后的数据发给各端;realtime-hub 负责实时 WebSocket 推送(站内通知 / 在线状态 / 已读回执 / WebRTC 信令,经网关
/ws隧道透传,多实例 Redis pub/sub,远程推送走 webhook 接桥)。 - 反馈:apps 的战绩上传经网关
POST /api/v1/stats/records直写 data-panel(shared-utils SDK 与独立数据管道为规划);推荐和榜单消费 data-panel 与 game-catalog 的查询接口。
技术栈:现状与候选
现状(详见 topology.zh.md):后端 go-zero REST + 少量 gRPC,前端 React/Vite 与 React Native(Expo), 存储 SQLite/MySQL 双驱动,观测 Prometheus + Promtail/Loki/Grafana,部署 docker compose。
候选(未选型,随演进阶段再定):小程序端 Taro/UniApp、PostgreSQL 主库、ElasticSearch 搜索、 Kafka 消息总线、Terraform + Kubernetes。本文其余章节同属愿景口径,与现状冲突时以 topology.zh.md 为准。
演进路线
- MVP:优先落地游戏库、攻略、社区基础功能,接入用户体系与内容发布。
- Phase 2:上线战绩数据、玩家档案、小游戏组队,实现实时推送。
- Phase 3:扩展爬虫、数据分析、赛事中心,打通后台运营和数据看板。
开发协作约定
- 所有服务/应用共享
packages/config中的工具链(make 目标/lint 配置/env 模板);代码通过 pnpm workspace 管理。 - 各服务以目录内
README.md记录 API 与运行说明(docs/子目录为规划)。 - 服务间接口契约由各服务内单测/集成测试覆盖;跨服务
tests/契约测试为规划(见tests/README.md)。 - CI/CD 经
.github/workflows自动化测试、文档构建与每日构建(platform/为规划)。