Robinhood 面经题 #1 —— 任务调度/定时执行服务设计(系统设计、可靠性、SLA、可观测性)

49次阅读
没有评论

Problem Statement: Build a service/system that can support defining and running jobs on a schedule.

Requirements:

  1. Should be able to create jobs
  2. Should be able to schedule and run jobs
  3. Should be able to report failures and successes
  4. Should be reliable and have strong guarantees about its job runs
  5. Should be able to view logs and status of running jobs, as well as previously finished jobs
  6. Should be able to handle when a job takes longer to run than expected (SLA)

总结(考点与落地方案)

目标: 设计一个可横向扩展、强可靠的 任务编排 / 定时调度服务

核心模块

  • API + 鉴权:创建 / 更新 / 禁用任务,立即触发,查询运行与日志。
  • 元数据存储(SQL):保存 Job 配置、cron/ 间隔、并发策略、重试、SLA、负责人等。
  • 调度器 :时间轮或优先队列按 next_run_at 扫描到期 Job;以 去重 token入队(幂等)。
  • 消息队列:持久化传递任务,支持 DLQ。
  • Worker 执行器 :拉取任务、执行目标(HTTP/ 脚本 / 容器),发心跳,按 并发 / 限流 执行。
  • 运行结果存储JobRun 状态机 + 计时与指标。
  • 日志系统:stdout/stderr 流存储至对象存储并索引到日志检索。
  • SLA/ 超时:看门狗监控运行时长;超时则标记 TIMED_OUT 并报警 / 可中断。
  • 重试 / 回退 :可配置重试次数,指数回退 + 抖动;要求任务实现 幂等
  • “准一次”执行业务语义 :Lease+Heartbeat 防止多实例并发;若被抢占可重放,但通过任务侧幂等实现 效果上的 Exactly-once
  • 高可用:调度器主备 + 选主(etcd/ZK),Worker 无状态、跨 AZ/Region。
  • 可观测性:全链路指标 / 日志 / 追踪与看板预警(SLA 违约、积压、成功率)。
  • 回填与停发:支持历史回放与维护窗口。
  • 安全:租户隔离、密钥保管(Vault)、RBAC。

关键点

  • next_run_at 建索引滚动调度,入队即计算下一次触发;
  • Per-job 串行保证 + 全局水平扩展;
  • SLA 以心跳与定时器双保险;
  • 先天幂等设计(去重键 = job_id + scheduled_at + attempt)。

适配面试延伸

  • 多租户 / 配额、工作流(DAG 依赖)、任务编排(条件 / 重试分支)、区域级容灾(RPO≈0,RTO 分钟级)。

VOprep 团队长期陪同学员实战各类大厂 OA 与 VO,包括 Robinhood、Google、Amazon、Citadel、SIG 等,提供实时答案助攻、远程陪练与面试节奏提醒,帮助大家在关键时刻不卡壳。
如果你也在准备 Tiktok 或类似工程向公司,可以了解一下我们的定制助攻方案——从编程面到系统设计,全程护航上岸。

正文完
 0