TEAM SYNC · 更新 2026-06-09

HUB 多 App 生态架构

治理主仓 + 多个 App + 统一平台服务。本页用分层架构图说明请求怎么走、配置怎么生效、生产怎么部署,并与当前交付进度对齐。

固定认知 所有正式请求都先进入 APISIX
年度进度 10/ 50
20% · 已发布 10 个公开作品
开发中 13 building / testing / design
开源项目 10 见 open.i2kai.com
APP + 小程序 18 移动交付条目

ARCHITECTURE MAPS

架构图

与 HUB 主仓 docs/项目/01_系统架构.md 对齐,出门协作可直接看图说话。

图 2 · 用户侧端到端

  • 不直连 RPC
  • 门面 ≠ 事实源
  • storage 旁路

HTTP 门面层与 RPC 领域层分离:public-api 编排调用,账号/支付/文件等主规则留在平台微服务。

100%
HTTP 入口链路(App 正式请求) 用户 App 终端 客户端 Flutter / UniApp / H5 SDK hub_core · 设备签名 入口 APISIX api.i2kai.com gateway 协议 · Token · 聚合 app-router 按 appId 路由 public-api App HTTP 门面 gRPC 聚合 平台 RPC 领域层(共享微服务 · 事实源) auth-rpc channel-rpc payment-rpc promotion-rpc file-rpc vip-rpc voice-rpc translation-rpc notification-rpc content-rpc legal-rpc feedback-rpc 支付履约链 payment-rpc → vip-rpc 文件旁路(不经 public-api) storage-api /v1/storage/* → file-rpc 关键约束 ① App 正式客户端优先走 /app/{appId}/v1/*,业务不长期挂旧公共路径 ② 支付回调、推广短链、广告 postback 走 /v1/* 或 /s/*,不走 App 私有路由 ③ gateway / public-api / admin-api 都是门面;配置与订单事实在 RPC + PostgreSQL

滚轮缩放 · 拖拽平移 · 双击重置

图 3 · APISIX 路由分流

  • 四路前缀
  • appId 命名
  • 门面分流

对 App 只有一个认知:所有正式请求先进入 APISIX,再按路径前缀分流到不同门面与服务群。

100%
L0 APISIX api.i2kai.com · 唯一公网入口 /app/{appId}/v1/* App 专属业务 API 例:babydiary/v1/records → gateway → public-api /v1/{domain}/* 平台共享客户端入口 例:auth · payment · config → gateway → 共享 RPC /v1/storage/* 文件上传与访问 例:multipart · presign → storage-api → file-rpc /admin-api/* 运营管理后台 例:RBAC · 配置写入 → admin-api → config-rpc 命名约定 appKey = apps/ 目录名(kebab-case) appId = 去连字符(baby-diary → babydiary) public-api 路由前缀 /app/{appId}/v1/* 第三方回调 微信支付 / 支付宝回调 → /v1/payment/* 推广短链 · 广告 postback → /v1/* 或 /s/* 不走 App 私有 /app/{appId} 路由

滚轮缩放 · 拖拽平移 · 双击重置

图 4 · Admin 控制面与配置生效

  • 控制面分离
  • config-rpc 事实源
  • ETCD 运行态

页面保存成功 ≠ 运行态已生效。配置经 config-rpc 写入数据库与 ETCD,由 owner service 消费后才真正生效。

100%
控制面写入链路(Admin → 持久化) 运营/管理员 浏览器 admin-web 五层菜单 UI APISIX admin.i2kai.com admin-api REST 门面 REST SSOT config-rpc 配置事实源 写入 PostgreSQL sys_config ETCD 运行态快照 watch / pull 运行态消费(owner service 读取 ETCD 后生效) gateway payment-rpc storage-api auth-rpc voice-rpc vip-rpc Admin 五层菜单 1. 工作台 2. 应用中心 3. 能力中心 4. 运营配置 5. 通用设置 生效判断三问 ① admin-api 写库成功了吗?(持久化) ② config-rpc 推送到 ETCD 了吗?(运行态快照) ③ owner service 是否已 reload / watch 到新配置?(真正生效)

滚轮缩放 · 拖拽平移 · 双击重置

图 5 · App 启动与支付主流程

  • 启动七步
  • 三分支
  • 支付回调链

从冷启动到业务动作的典型路径:鉴权 → 拉配置 → 三分支(业务 / 文件 / 支付)→ 回调履约链。

100%
启动链(鉴权 + 配置) App 启动 init appId channelCode deviceId device-login app-config 业务页面 或 wechat-login effective-config 业务动作三分支 普通业务 /app/{appId}/v1/* → public-api → 业务 RPC + 共享 RPC content · legal · feedback · notification 文件上传 /v1/storage/* → storage-api → file-rpc 策略与元数据事实源在 file-rpc 发起支付 /app/{appId}/v1/payment/* → payment-rpc 创建订单 · IAP / 微信 / 支付宝 客户端验单 + 服务端回调双通道 支付回调履约链 支付回调 /v1/payment/callback payment-rpc 验单 · 更新订单 vip-rpc 发放权益 promotion-rpc 记录转化 App 刷新 会员状态 UI 记住 支付回调走平台共享路径,不走 App 私有路由 · 页面显示会员态以 vip-rpc 为准 · 推广归因在 promotion-rpc

滚轮缩放 · 拖拽平移 · 双击重置

图 6 · 生产部署拓扑

  • 香港主运行面
  • 平台机 CI/CD
  • 入口收敛

公网经 Cloudflare 到香港业务机 APISIX;平台机负责 CI/CD 构建推送;开源进度站独立托管在 GitHub Pages。

100%
生产公网链路(用户 → 运行时) 用户 App / H5 Cloudflare DNS · TLS · WAF 入口 香港 APISIX api.i2kai.com · admin.i2kai.com 香港运行时服务群 gateway · app-router · public-api · admin-api · storage-api auth · payment · vip · voice · translation · channel · promotion · file … PostgreSQL · Redis · ETCD · files.i2kai.com(可独立落点) 118.193.47.55 · 主写数据收敛香港侧 平台机(构建 · 注册 · 部署) 平台机 Gitea · Actions deploy Registry 镜像 · 制品 香港机 拉取 · 滚动 开源协作面(与本站) GitHub Pages apps.open.i2kai.com Open 仓 lys-apps-progress HUB 主仓 标准 · 文档 sync-to-open.sh 同步进度与架构 · 出门协作读公开站 本地联调拓扑(开发者) 本地 App 模拟器 natapp 回调穿透 local APISIX 18000 段 gateway public-api 55000 段 共享服务 18000 段 PostgreSQL Redis · ETCD 拓扑原则 公网统一 APISIX 入口 · 平台机与运行面分离 · 旧国内机已退出主业务 · 新端口先登记 app-port-registry.json

滚轮缩放 · 拖拽平移 · 双击重置

MICROSERVICES

微服务索引

摘要自 HUB 主仓 docs/架构/微服务索引.md(2026-05-16)。共 21 个平台组件与服务。

拓扑:App/Web/Admin → APISIX → gateway / admin-api / storage-api → platform RPC / app public-api

入口层协议与兼容层管理门面层领域服务层HTTP 支撑层
服务 层次 形态 路径 / 域 主责
APISIX App 只能感知 APISIX,不能感知 RPC 地址 入口层 入口 /v1/* · /app/* · /v1/storage/* · /admin-api/* 唯一公网入口、路由、TLS、限流与安全策略
gateway C 端协议层,不是领域事实源 协议与兼容层 Gateway /v1/* 平台代理 · /app/* app-router App 上下文、Token 校验、响应适配、按 appId 解析 public-api upstream
admin-web 管理门面层 前端 /admin/* 运营控制台前端,不拥有后端领域规则
admin-api 转发 config-rpc,不是配置事实源 管理门面层 HTTP /admin-api/* 管理端 REST、RBAC、配置写入门面
storage-api 与 file-rpc 成对:HTTP 入口 + 元数据事实源 HTTP 支撑层 HTTP /v1/storage/* 标准上传入口、对象存储访问,调用 file-rpc
auth-rpc 部分 user/profile 兼容接口仍临时承接 领域服务层 RPC /app/{appId}/v1/auth/* · /v1/auth/* 登录、token、session、设备/第三方登录、凭据安全
channel-rpc 领域服务层 RPC /v1/channel/* 渠道生效配置、app/channel/platform 三元配置
config-rpc 平台级配置与 App registry 统一服务 领域服务层 RPC /v1/config/* · sys_config · platform_apps App 公共配置、功能开关、系统配置双写 DB + ETCD
quota-rpc 领域服务层 RPC /v1/quota/* 配额、用量、扣减与恢复
vip-rpc 支付履约链下游 领域服务层 RPC 经 /app/{appId}/v1/payment/* 投影 会员状态、权益、套餐与订阅有效性
payment-rpc 编排 vip-rpc · promotion-rpc 领域服务层 RPC /app/{appId}/v1/payment/* · /v1/payment/callback/* 订单、支付回调、验签、退款、商户配置
promotion-rpc 领域服务层 RPC /v1/promotion/* · /s/* 推广归因、点击追踪、S2S 上报
notification-rpc auth send-code 链下游 领域服务层 RPC internal · 可映射 /v1/notification/* 短信、邮件、推送、站内通知发送
feedback-rpc 平台共享,不按 App 复制 领域服务层 RPC /v1/feedback/* 用户反馈、工单、问题回执
content-rpc 领域服务层 RPC /v1/content/* 公告、文章、Banner、帮助内容等平台内容
legal-rpc 领域服务层 RPC /v1/legal/* 用户协议、隐私政策、订阅条款、确认记录
asset-rpc asset ≠ 文件资源 领域服务层 RPC /v1/asset/* 账户资产:积分、余额、资产流水
voice-rpc 领域服务层 RPC /v1/voice/* 音色、语音包、ASR/TTS、变声与历史
translation-rpc 领域服务层 RPC /v1/translation/* 多语言翻译能力(译言宝等 App 复用)
analytics-rpc 不应成为业务事实主库 领域服务层 RPC admin/internal · /v1/analytics/* 统计指标、趋势、报表聚合
file-rpc 策略事实源;storage-api 为 HTTP 入口 领域服务层 RPC /v1/files/* · internal 文件元数据、上传策略、下载地址、绑定、删除

MAIN FLOWS

四条主流程(代码冻结版)

与微服务索引 §2.6 对齐,便于排查「配置写了为何没生效」「上传/支付/发码走哪条链」。

01

后台控制面写入与分发

admin-web 保存后,config-rpc 双写 PostgreSQL 与 ETCD;各 owner service 消费方式尚未完全统一。

  1. admin-web → admin-api POST /admin/config/system
  2. admin-api → config-rpc UpdateSystemConfig
  3. config-rpc UPSERT sys_config + PUT ETCD /hub/configs/{module}
  4. auth-rpc 经 GetSystemConfig 读 DB;storage/notification watch ETCD;payment 按需读 ETCD
涉及: admin-webadmin-apiconfig-rpcauth-rpcstorage-apinotification-rpcpayment-rpc
02

存储上传主链

storage-api 走 HTTP 上传;file-rpc 决定策略;storage_capability 叠加 provider 选择。

  1. App → APISIX POST /v1/storage/upload
  2. storage-api resolveUploadContext → file-rpc ResolveUploadPolicy
  3. file-rpc 查 file_storage_policies 返回 provider/path/visibility
  4. storage-api 叠加 storage_capability → 上传 OSS → file-rpc RegisterUploadedFile
涉及: storage-apifile-rpcAPISIX
03

支付下单主链

payment-rpc 创建订单,读取 capability 绑定与 method config,调用 PSP prepay。

  1. App → /app/{appId}/v1/payment/orders
  2. payment-rpc insert payment_orders
  3. 读 ETCD app_capability_bindings + payment_method_configs
  4. 调用微信/支付宝 prepay → 返回 payParams
  5. 回调 → 验单 → vip-rpc 履约 · promotion-rpc 归因
涉及: payment-rpcvip-rpcpromotion-rpcgateway
04

认证发码主链

auth_identity_capability 参与 route 选择,notification-rpc 发送短信/邮件。

  1. App → POST /v1/auth/send-code
  2. auth-rpc GetSystemConfig(auth_identity_capability)
  3. 校验 account policy · 选 route · Redis 存验证码
  4. auth-rpc → notification-rpc SendNotification(provider/template/rateLimit)
  5. notification-rpc → SMS/Email provider
涉及: auth-rpcconfig-rpcnotification-rpcgateway

CONSTRAINTS

关键约束

与主仓架构文档一致,协作时优先对齐以下六条。

01

APISIX 单入口

所有正式请求先进入 APISIX,再按四路前缀分流;App 不直连 RPC。

02

门面 ≠ 事实源

gateway / public-api / admin-api 只做编排;账号、支付、文件规则在平台 RPC。

03

配置生效链

Admin 保存成功不等于运行态生效,需 config-rpc → ETCD → owner service 消费。

04

文件统一入口

上传走 storage-api,策略与元数据事实源在 file-rpc。

05

回调走共享路径

支付回调、推广短链、广告 postback 走 /v1/* 或 /s/*,不走 App 私有路由。

06

端口登记

平台 18000–19999 · App ingress 55000–58999 · 业务 RPC 8000–9999,先登记 registry。

PLATFORM

平台模块完成度

模块状态说明
治理主仓 docs/scripts 已完成 标准、门禁、模板已成体系
APISIX 单入口 已完成 所有正式请求统一入口
gateway + app-router 已完成 App 专属路由分流
admin-web / admin-api 进行中 MVP 已上线,RBAC 持续完善
共享微服务 进行中 auth/payment/vip 等本地可跑
hub_core SDK 迁移 待推进 批量 App 接入统一 SDK

CAPABILITIES

共享能力域

多个 App 复用平台能力,避免每个产品重复做账号、支付、语音等基础模块。

身份 identity

登录、设备、会话、渠道配置

支付 payment

IAP、微信/支付宝、订单回调

会员 vip

订阅权益、套餐状态

语音 voice

ASR、TTS、变声(如夜莺变声器)

翻译 translation

多语言翻译(如译言宝)

存储 storage

上传、资源分发

消息 notification

推送与消息通道

REFERENCE APPS

四 App 样板

平台参照的代表性应用,覆盖 UniApp / Flutter 与不同能力组合。

宝宝点滴

baby-diary

婴幼儿喂养作息记录,家庭协作与提醒

UniApp + go-zero 业务样板 · 见应用目录同类条目

萌宠圈

cute-meow-circle

萌宠内容、问候图/表情包、AI 风格化创作

UniApp + go-zero 业务样板 · 见应用目录同类条目

译言宝

translator

文本/拍照/语音多模态翻译

Flutter + go-zero 看公开进度 →

夜莺变声器

nightingale-voice-changer

录音变声、音色库、会员订阅

Flutter + voice 链路 业务样板 · 见应用目录同类条目

APPS

应用与进度

每个 App 干什么、项目后缀与排期,见应用目录(28 条 50 Builds 跟踪 + 全量 HUB 清单)。