# 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 | --- **文档结束**