Skip to content

架构设计

1. 文档目标

定义 blsflow 当前阶段的整体架构、模块边界、服务分工、交互关系、状态归属与禁止事项。 本文件用于判断“任务是否突破既定架构”。

当前文档不进入:

  1. 数据库表设计
  2. 接口字段设计
  3. 代码实现方案

2. 系统目标

blsflow 当前阶段聚焦以下系统目标:

  1. 支持 CPU 矿机统一接入与统一管理
  2. 提供手动控制与智能调度并存的运行模式
  3. 基于产量、币价、功耗、电价形成实时利润驱动的自动调度能力
  4. 在关键依赖异常时优先保守,冻结整个调度域
  5. 提供围绕机器的最小可用维修留痕体系

3. 逻辑模块骨架

系统在逻辑上保留以下 6 个一级模块:

  1. 平台接入与控制台模块
  2. 设备与 Agent 管理模块
  3. 挖矿配置与币种配置模块
  4. 收益数据与监控模块
  5. 调度与执行编排模块
  6. 维修记录模块

3.1 模块主依赖主链

  • 平台控制台 -> 调度模块 -> 设备与 Agent 模块 -> 矿机
  • 设备与 Agent 模块 -> 收益与监控模块 -> 调度模块
  • 挖矿配置与币种配置模块 -> 调度模块 / 设备与 Agent 模块
  • 平台控制台 -> 维修记录模块

4. 物理服务划分

一期物理上先收敛为 4 个核心云端服务 + 1 个矿机端 Agent

  1. 平台门户服务
  2. 设备控制服务
  3. 调度核心服务
  4. 数据与配置服务
  5. 矿机 Agent

4.1 一级模块到服务映射

  • 平台接入与控制台模块 -> 平台门户服务
  • 设备与 Agent 管理模块 -> 设备控制服务
  • 挖矿配置与币种配置模块 -> 数据与配置服务
  • 收益数据与监控模块 -> 数据与配置服务
  • 调度与执行编排模块 -> 调度核心服务
  • 维修记录模块 -> 数据与配置服务
  • 矿机侧执行能力 -> 矿机 Agent

5. 服务职责与边界

5.1 平台门户服务

职责

  1. 提供统一 Web 控制台入口
  2. 承接登录、页面展示、用户操作提交
  3. 聚合设备、调度、收益、维修等查询能力
  4. 向后端各服务转发用户操作

边界约束

  1. 不承载智能调度核心逻辑
  2. 不直接维护设备执行状态
  3. 不直接与矿机 Agent 通信

5.2 设备控制服务

职责

  1. 管理矿机接入、在线状态与 Agent 通信
  2. 接收并执行远程控制命令
  3. 协调批量控制任务
  4. 维护机器当前运行状态与单机能力基线
  5. 对外提供设备事实状态与命令执行能力

边界约束

  1. 负责“能否执行、如何执行、执行结果如何”
  2. 不负责判断“为什么要切币”
  3. 不负责收益计算与调度策略

5.3 调度核心服务

职责

  1. 管理智能调度范围
  2. 基于收益数据生成调度决策
  3. 维护调度任务状态、冻结状态与恢复状态
  4. 调用设备控制服务完成调度动作执行
  5. 产出调度结果与通知事件

边界约束

  1. 负责“该不该调度、调度到哪里、何时冻结”
  2. 不直接管理矿机连接
  3. 不直接维护币种配置

5.4 数据与配置服务

职责

  1. 管理币种、钱包、矿池、启动参数等配置
  2. 采集矿池产量、币价、BMC 功耗、电价
  3. 计算利润与监控异常状态
  4. 管理维修日志留痕
  5. 向门户与调度服务提供统一查询能力

边界约束

  1. 负责事实数据、配置数据和状态聚合结果
  2. 不直接执行矿机控制动作
  3. 不负责最终调度编排

5.5 矿机 Agent

职责

  1. 上报主机状态
  2. 接收平台命令
  3. 执行切币、启停、升级、配置更新
  4. 回传执行结果

边界约束

  1. 只负责本机执行与上报
  2. 不承载平台级业务决策

6. 核心交互方式

6.1 同步交互

适合立即返回结果的操作:

  1. 门户查询设备状态、收益、配置
  2. 门户提交手动操作
  3. 调度服务查询候选币种和收益快照
  4. 设备控制服务查询机器最新控制状态

6.2 异步交互

适合命令投递、状态回传与事件通知:

  1. 调度服务下发批量切币任务
  2. 设备控制服务向 Agent 投递命令
  3. Agent 回传执行结果
  4. 数据异常触发冻结事件
  5. 调度结果通知门户或告警中心

6.3 定时任务交互

适合周期采集与周期调度:

  1. 周期采集矿池产量
  2. 周期采集币价
  3. 周期获取 BMC 功耗
  4. 周期执行调度判断

7. 核心状态归属

7.1 设备状态

包括:

  • 在线 / 离线
  • 命令执行中 / 成功 / 失败

归属服务:设备控制服务

7.2 机器运行上下文

包括:

  • 当前运行币种
  • 当前控制上下文

归属原则:

  • 主事实归 设备控制服务
  • 聚合展示可同步给 数据与配置服务

7.3 调度状态

包括:

  • 智能调度启用 / 停用
  • 冻结 / 恢复
  • 冻结原因

归属服务:调度核心服务

7.4 收益与监控状态

包括:

  • 产量
  • 价格
  • 功耗
  • 电价
  • 净利润
  • 异常判断

归属服务:数据与配置服务


8. 核心业务闭环

8.1 调度闭环

收益数据输入 -> 利润计算 -> 调度决策 -> Agent 执行 -> 机器状态回传

8.2 异常闭环

数据源异常 / Agent 异常 -> 监控判断 -> 调度冻结 -> 通知用户 -> 用户手动恢复

8.3 冻结语义

冻结指:停止智能调度任务,不改变机器当前运行币种,不停机。 恢复由用户手动发起,平台不自动恢复。


9. 可扩展点

  1. 可继续定义跨服务接口边界
  2. 可继续细化关键状态流转
  3. 可继续细化异常处理闭环
  4. 可在逻辑模块不变前提下,后续再拆更多物理服务

10. 禁止事项

  1. 不允许在门户服务承载调度核心逻辑
  2. 不允许设备控制服务维护调度策略
  3. 不允许调度核心服务直接与 Agent 建立耦合通信
  4. 不允许多服务重复持有核心主状态
  5. 不允许未经过决策记录就提前拆出过多微服务
  6. 不允许在当前阶段直接扩展为数据库表结构设计或代码实现文档

11. 当前阶段推进建议

若进入开发或进一步设计,建议推进顺序:

  1. 设备与 Agent 管理模块
  2. 挖矿配置与币种配置模块
  3. 收益数据与监控模块
  4. 调度与执行编排模块
  5. 平台接入与控制台模块
  6. 维修记录模块