羲和任务调度平台
羲和任务调度平台是针对个人爬虫和实际业务中的任务调度需求设计的一套任务调度系统.
设计中主要特征是以下几点:
- 基于输入输出的纯动态依赖定义
- 最小化项目接入成本、运行时和调度器完全分离
- 统一管理不同网络环境、不同机器上的任务
纯动态依赖定义
这一点主要是为了保证任务-数据之间可以存在动态的多对多关系.
例如, 排行榜计算可能会使用
运行时和调度器分离
针对实际工作环境中, 不同的任务往往需要在特定环境下执行的特点, 设计上采用了服务端+客户端库独立部署的模式.
客户端库提供了一批接口, 包括任务定义、任务初始化, 以及任务执行过程中的一些数据获取和更新接口.
在客户端内部, 实现了基于WebSocket的注册、链接保持和数据通信机制, 但这部分对实际任务是隐藏的.
实际任务实现时, 只需要安装客户端和自身的运行环境依赖, 并使用客户端库的接口定义完成任务定义和功能实现即可.
由于任务运行时的轻量化和无状态特征, 输出数据、客户端日志等都被视为临时数据, 会统一收集和保存到服务端.
这样做的好处是简化客户端库和整体架构实现, 但可能会带来较高的带宽和存储压力.
因此, 对于大体量的数据, 使用外部存储会更加合适, 在羲和平台中仅保存外部存储访问方式+数据hash.
目前这一方案并非默认配置, 还是需要在客户端端代码中实现.
统一管理不同网络环境、不同机器上的任务
平台包含一个统一的服务端, 所有任务实现都会通过客户端库注册到这个服务端, 并由服务端中的调度器进行任务调度.
此外, 服务端还会负责完成运行情况记录、日志收集、输出数据保存等工作.
统一管理的好处在于后续实现任务运行状态检查、机器离线检查等内容时, 实现起来会方便很多.
- 标题: 羲和任务调度平台
- 作者: AutumnSun
- 创建于: 2023-04-01 14:12:35
- 更新于: 2023-04-05 21:06:57
- 链接: https://autumn21.top/blog/2023-04-01/93a4299033ee/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。