# 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 |

---

**文档结束**
