2. 核心概念

2.1 基本架构

Scalebox应用程序采用分层组织。模块层将算法封装为标准容器,并提供事件驱动式容器层接口;应用层通过主路由模块实现任务分发,并支持复杂的并行逻辑。

2.2 核心概念详解

概念 英文名称 中文名称 说明
应用程序 App 应用 完成特定计算任务的应用程序,包含多个Module。App可通过调用资源调度系统(如Slurm)动态获取所需的计算资源。
软件单元 Module 模块 构成应用程序App的基本可编程单元,是以容器化封装的程序代码集合。通常为一个独立算法组件,或跨节点间传输的组件等。组件间通过级联形成数据处理流水线。
执行实例 Task 任务 基本运行单位,输入数据在具体Module上的执行过程。
计算节点 Host 节点 执行计算任务的服务器节点。
资源单元 Slot 插槽 节点上与Module对应的计算资源切片,是Task细粒度运行调度的基础单位

2.3 应用(App)

应用组成

  • 主路由模块:系统主程序,负责将任务分配给定制算法模块、公共基础模块,并维护整个应用的运行状态。

  • 定制算法模块:用户业务模块,以消息驱动形式,实现特定算法功能。

  • 公共基础模块:文件传输、目录列表等基础功能模块。

应用定义

应用通过YAML配置文件定义,包含:

  • 应用名称和标识

  • 模块定义和配置

  • 参数设置

  • 集群配置

2.4 模块(Module)

模块类型

  1. 算法模块:用户自定义的计算逻辑

  2. 传输模块:数据传输和文件操作

  3. 路由模块:消息路由和任务分发

  4. 辅助模块:目录列表、定时任务等

模块特性

  • 容器化封装:独立运行环境,环境隔离

  • 消息驱动:通过标准输入接收任务消息

  • 无状态设计:支持重复执行和容错

  • 多语言支持:支持Python、Go、C++、Java、Shell等多种语言

2.5 任务(Task)

任务生命周期

  1. 创建:应用创建时生成任务

  2. 就绪:任务准备就绪,等待执行

  3. 执行中:任务正在执行

  4. 完成:任务执行成功

  5. 失败:任务执行失败(可重试)

任务格式

  • 任务体:任务输入数据,JSON格式或无空字符字符串

  • 任务头:任务元数据,JSON格式字符串

  • 任务ID:唯一标识符

2.6 运行槽(Slot)

  • Slot功能

    • 资源分配:节点上的计算资源切片

    • 任务执行:具体任务的执行环境

    • 状态管理:管理任务的执行状态

2.7 集群(Cluster)

集群类型

  1. 单节点集群:测试、开发,单个节点同时充当管理节点和计算节点

  2. 内联集群:包括1个或多个头节点、若干个计算节点

  3. 外部集群:由外部资源调度系统管理的计算集群(如Slurm等)

集群组件

  • 头节点:运行controld、actuator、database等控制服务

  • 计算节点:执行具体计算任务

  • 共享存储:可选,用于节点间数据共享

2.8 并行化方式

模块内并行

算法内部的代码级并行,如多线程、GPU加速等。

模块级并行

同一模块的多个实例并行处理不同数据,实现数据并行。

模块间并行

不同模块通过流水线方式并行执行,实现流水线并行。