# 源码走读
##  API Server
API Server是平台服务入口，提供API和web UI功能。

- 入口：src/mvp/py/server.py
- 配置文件：src/mvp/configs/dev.yaml，解析成V2Config数据结构
- 核心模块：
    - service：服务层，包括API服务，任务调度，模型调度等后台任务
    - core： 核心数据结构，任务ID，submission ID，model serving ID定义
    - ray： 对接ray cluster的client

## service核心模块
API Server核心模块包括：
- app.py: API 入口层，提供webui，将API请求转化为各类数据库操作，以及协调SFTPGo服务
- scheduler.py：定时任务，调度训练任务队列，提交ray job，更新数据库中任务状态
- serving_reconciler.py: 定时任务，模型推理调度，提交ray serve app，调整副本数，更新数据库中模型实例状态
- db.py: 数据库操作基础工具类
- janitor.py：定时清理训练任务中间过程数据
- sftpgo.py: 对接SFTPGo的客户端，创建用户、重置密码、初始化用户目录等

## core核心模块
- ray_job_tool.py：通过builder模板构建ray job命令，提交ray job到ray集群。
- head_publisher.py: Ray head节点自动写head IP 文件到共享存储
- worker_watchdog.py: 自动检查最新head IP文件，加入head的ray集群。
- models: 定义RayConfig/JobSepc/AdvancedTaskSpec等核心数据结构


