rwadurian/docs/deployment/RWADurian-2.0-部署与运维成本方案.md

9.7 KiB
Raw Blame History

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

文档结束