diff --git a/docs/deployment/RWADurian-2.0-部署与运维成本方案.md b/docs/deployment/RWADurian-2.0-部署与运维成本方案.md new file mode 100644 index 00000000..1e000006 --- /dev/null +++ b/docs/deployment/RWADurian-2.0-部署与运维成本方案.md @@ -0,0 +1,309 @@ +# RWADurian 2.0 系统部署与运维成本方案 + +**版本:** 1.0 +**日期:** 2026年1月22日 +**编制:** 技术部 + +--- + +## 一、项目概述 + +### 1.1 系统简介 + +RWADurian 2.0 是一套基于微服务架构的数字资产挖矿与交易系统。用户通过贡献算力参与挖矿,系统按秒计算并分配资产份额,同时支持资产交易、销毁等功能。 + +### 1.2 业务场景 + +#### 场景一:实时挖矿与资产展示 + +用户通过安卓 App 参与挖矿,系统需要: + +- **按秒计算挖矿收益**:根据用户算力占比,每秒计算并分配资产份额 +- **实时推送资产变化**:用户在 App 上能实时看到资产数量和价值的变化 +- **长连接保持**:用户打开 App 期间,通过 WebSocket 长连接保持数据同步 +- **不间断运行**:挖矿服务全年 7×24 小时不中断 + +#### 场景二:资产交易与K线行情 + +用户可在平台内进行资产买卖: + +- **实时K线行情**:展示分钟/小时/日K线图表 +- **销毁记录实时更新**:每笔交易产生的销毁量实时显示 +- **价格实时刷新**:资产价格随交易实时变动 + +### 1.3 需部署服务清单 + +| 服务名称 | 路径 | 功能描述 | 端口 | +|----------|------|----------|------| +| mining-admin-web | frontend/mining-admin-web | 管理后台前端 | 3100 | +| auth-service | backend/services/auth-service | 用户认证与授权 | 3024 | +| contribution-service | backend/services/contribution-service | 算力/贡献值管理 | 3020 | +| mining-service | backend/services/mining-service | 挖矿核心服务 | 3021 | +| trading-service | backend/services/trading-service | 交易与行情服务 | 3022 | +| mining-admin-service | backend/services/mining-admin-service | 管理后台API | 3023 | + +### 1.4 技术栈 + +| 组件 | 技术 | +|------|------| +| 前端 | Next.js 14 + React 18 + Tailwind CSS + ECharts | +| 后端 | NestJS 10 (全部5个服务) | +| 数据库 | PostgreSQL 15 | +| 缓存 | Redis 7 | +| 消息队列 | Kafka | +| 实时通信 | Socket.io (WebSocket) | + +--- + +## 二、数据存储与带宽需求分析 + +### 2.1 数据存储需求 + +#### 核心数据结构 + +| 数据类型 | 单条大小 | 产生频率 | 说明 | +|----------|----------|----------|------| +| MiningRecord | 152 bytes | 每用户每分钟1条 | 挖矿记录 | +| MiningTransaction | 320 bytes | 每笔交易1条 | 资产流水 | +| BurnRecord | 216 bytes | 每分钟1条 | 销毁记录 | +| MinuteKLine | 152 bytes | 每分钟1条 | K线数据 | + +#### 存储量估算(按 10,000 活跃用户计算) + +| 时间范围 | 原始数据量 | 含索引 (×1.5) | +|----------|------------|---------------| +| 每日 | ~1.1 GB | ~1.7 GB | +| 每月 | ~33 GB | ~50 GB | + +### 2.2 带宽需求 + +#### 实时推送数据量(单用户) + +| 推送类型 | 数据大小 | 推送频率 | 带宽占用 | +|----------|----------|----------|----------| +| 价格更新 | 200 bytes | 每秒1次 | 1.6 kbps | +| 余额更新 | 495 bytes | 每秒1次 | 3.96 kbps | +| 销毁/K线 | 425 bytes | 每分钟1次 | 0.1 kbps | +| **单用户合计** | | | **5.7 kbps** | + +#### 带宽承载能力 + +| 带宽规格 | 理论承载 | 实际承载(预留30%) | +|----------|----------|---------------------| +| 10 Mbps | 1,754 用户 | ~1,200 用户 | +| 50 Mbps | 8,771 用户 | ~6,000 用户 | +| 100 Mbps | 17,543 用户 | ~12,000 用户 | + +--- + +## 三、方案一:高可用架构 + +### 3.1 适用场景 + +**要求全年每一秒钟都不中断挖矿与销毁记录,用户通过安卓手机实时长连接,按秒显示资产数量与价值。** + +- 挖矿服务 7×24 不间断运行 +- 用户 App 实时展示资产变化 +- 主备自动切换,故障无感知 + +### 3.2 架构设计 + +``` + ┌─────────────┐ + │ 用户请求 │ + └──────┬──────┘ + │ + ┌──────▼──────┐ + │ Nginx VIP │ (Keepalived 漂移) + └──────┬──────┘ + ┌────────────┼────────────┐ + │ │ + ┌──────▼──────┐ ┌──────▼──────┐ + │ Server 1 │◄────────►│ Server 2 │ + │ (主节点) │ 心跳检测 │ (备节点) │ + │ │ │ │ + │ - 6个服务 │ │ - 6个服务 │ + │ - Nginx │ │ - Kafka │ + │ - Redis主 │ │ - Redis从 │ + └──────┬──────┘ └──────┬──────┘ + │ │ + └────────────┬────────────┘ + │ + ┌──────▼──────┐ + │ Server 3 │ + │ (数据库) │ + │ │ + │ - PG 主实例 │ + │ - PG 从实例 │ + └─────────────┘ +``` + +### 3.3 服务器配置 + +| 服务器 | 角色 | 部署内容 | +|--------|------|----------| +| Server 1 | 应用主节点 | 6个服务 + Nginx + Redis主 | +| Server 2 | 应用备节点 | 6个服务(热备) + Kafka + Redis从 | +| Server 3 | 数据库节点 | PostgreSQL 主从复制 | + +### 3.4 高可用机制 + +| 故障场景 | 恢复策略 | 恢复时间 | +|----------|----------|----------| +| Server 1 宕机 | Keepalived 自动切换至 Server 2 | < 30 秒 | +| Server 2 宕机 | Server 1 继续服务 | 无影响 | +| Server 3 宕机 | 从实例提升为主 | < 5 分钟 | +| 单服务崩溃 | PM2/Systemd 自动重启 | < 10 秒 | + +### 3.5 月度成本 + +| 费用项目 | 规格 | 月租金 | +|----------|------|--------| +| 应用服务器 ×2 | 主备双活 | ¥7,000 | +| 数据库服务器 ×1 | PostgreSQL 主从 | ¥3,500 | +| 带宽 | 100 Mbps × ¥100/M | ¥10,000 | +| 公网 IP | 3 个 | ¥150 | +| 备份 + 监控 | - | ¥300 | +| **合计** | | **¥20,950/月** | + +### 3.6 支撑能力 + +| 指标 | 数值 | +|------|------| +| 同时在线用户 | ~12,000 | +| 实时推送频率 | 每秒 | +| 可用性 | 99.9%+ | + +--- + +## 四、方案二:标准架构 + +### 4.1 适用场景 + +**不考虑挖矿是否中断,中断后重启继续即可;不要求按秒实时显示,但销毁记录和K线需要实时刷新。** + +- 允许短暂服务中断 +- K线行情、销毁记录实时更新 +- 资产余额可通过轮询刷新 + +### 4.2 架构设计 + +``` + ┌─────────────┐ + │ 用户请求 │ + └──────┬──────┘ + │ + ┌──────▼──────┐ + │ Server 1 │ + │ (单节点) │ + │ │ + │ - 6个服务 │ + │ - Nginx │ + │ - Redis │ + │ - Kafka │ + │ - PostgreSQL│ + └─────────────┘ +``` + +### 4.3 服务器配置 + +| 服务器 | 角色 | 部署内容 | +|--------|------|----------| +| Server 1 | 全功能节点 | 6个服务 + 全部中间件 + 数据库 | + +### 4.4 月度成本 + +| 费用项目 | 规格 | 月租金 | +|----------|------|--------| +| 服务器 ×1 | 应用 + 数据库 | ¥3,500 | +| 带宽 | 10 Mbps × ¥100/M | ¥1,000 | +| 公网 IP | 1 个 | ¥50 | +| 机柜托管 | 2U | ¥400 | +| 备份 + 监控 | - | ¥200 | +| **合计** | | **¥5,150/月** | + +### 4.5 支撑能力 + +| 指标 | 数值 | +|------|------| +| 同时在线用户 | ~1,200 | +| K线/销毁刷新 | 实时 | +| 可用性 | 99%+ | + +--- + +## 五、方案对比 + +| 维度 | 方案一(高可用) | 方案二(标准) | +|------|-----------------|---------------| +| **适用场景** | 秒级实时推送,不中断 | K线/销毁实时,允许中断 | +| **月成本** | ¥20,950 | ¥5,150 | +| **服务器数量** | 3 台 | 1 台 | +| **带宽** | 100 Mbps | 10 Mbps | +| **同时在线用户** | ~12,000 | ~1,200 | +| **实时性** | 秒级推送 | 分钟级/轮询 | +| **可用性** | 99.9% | 99% | +| **挖矿中断处理** | 自动切换,不中断 | 需手动重启 | + +--- + +## 六、成本汇总 + +| 方案 | 月成本 | +|------|--------| +| 方案一(高可用) | ¥20,950 | +| 方案二(标准) | ¥5,150 | +| **差额** | ¥15,800 | + +--- + +## 七、建议 + +### 7.1 初期阶段 + +建议采用 **方案二(标准架构)**: + +- 月成本仅 ¥5,150,降低初期投入 +- 满足初期用户规模需求(~1,200 在线) +- 快速上线验证业务模式 +- K线和销毁记录仍可实时刷新 + +### 7.2 扩展阶段 + +当满足以下条件时,升级至 **方案一(高可用架构)**: + +- 同时在线用户超过 1,000 +- 用户对实时性要求提高 +- 业务模式验证成功,进入增长期 + +--- + +## 八、附录 + +### 8.1 服务端口分配 + +| 服务 | 端口 | +|------|------| +| mining-admin-web | 3100 | +| contribution-service | 3020 | +| mining-service | 3021 | +| trading-service | 3022 | +| mining-admin-service | 3023 | +| auth-service | 3024 | +| PostgreSQL | 5432 | +| Redis | 6379 | +| Kafka | 9092 | + +### 8.2 数据库分配 + +| 服务 | 数据库名 | Redis DB | +|------|----------|----------| +| auth-service | rwa_auth | 14 | +| contribution-service | rwa_contribution | 0 | +| mining-service | mining_db | 1 | +| trading-service | trading_db | 2 | +| mining-admin-service | mining_admin_db | 3 | + +--- + +**文档结束** diff --git a/docs/deployment/RWADurian-2.0-部署与运维成本方案.pdf b/docs/deployment/RWADurian-2.0-部署与运维成本方案.pdf new file mode 100644 index 00000000..d171540d Binary files /dev/null and b/docs/deployment/RWADurian-2.0-部署与运维成本方案.pdf differ