调度器
调度器是 HolaCloud 生态系统中的内存延迟任务队列。它提供基于时间的任务入队、基于租约的工作者预留,以及通过 Server-Sent Events (SSE) 推送的快照监控。它用于短生命周期的延迟任务,不提供周期调度、自动重投递或共享持久化能力。
主要特性
内存任务存储
任务保存在内存中,实现快速调度和分发。该服务针对高吞吐量、低延迟的工作负载进行了优化,适用于任务在计划时间后不久即被处理的情况。
基于时间的调度
每个任务都包含一个future(或delay)字段,控制任务何时变为可用。任务在计划时间到达前处于休眠状态,之后对工作者可见。
基于租约的预留
当工作者预留一个任务时,该任务进入由worktime定义的租约期。如果工作者在租约期内完成并确认任务,任务将被移除。如果租约到期,任务将重新变为可用,供其他工作者预留。这保证了至少一次处理,无需人工干预。
SSE流
/schedulers/{id}/tasks/stream端点提供任务事件的实时SSE流。工作者和监控面板可以订阅以接收新任务、完成任务和租约到期事件。
标签与过滤
任务可以在入队时使用任意labels(键值对)进行注释。列表操作支持按标签过滤,便于按项目、优先级或工作者组检查任务。
使用场景
Cron替代
安排一次性延迟任务。每次入队调用都会创建一个任务,并在指定时间变为可用。
延迟任务处理
入队带有延迟的作业——例如,在用户注册24小时后发送提醒邮件。调度器会保留任务直到指定时间。
工作者协调
多个工作者可以从同一个调度器预留和处理任务。租约机制确保在正常情况下每个任务只处理一次,如果工作者失败则自动重试。
重试队列
当任务失败时,使用增加的延迟重新调度它。调度器的reschedule端点使实现指数退避变得简单。
HolaCloud的调度器是一个轻量级、对开发者友好的传统任务调度器替代方案,专为云原生应用而构建。
评论