[题型设计]复杂任务调度设计

最近想优化一下业务代码之中的任务调度模块, 我把整体需求理了理, 准备重头开始设计一下.

请听需求:

在业务系统里面, 任务提交是一个非常常见的场景, 下面是我提炼的业务系统任务的几个特点:

  1. 任务运行时间较长, 可能会超过一个小时, 肯定会有不同的状态
  2. 任务会有不同类型, 每个类型之间会有一定关联, 但是差别也很多
  3. 一个任务可能会有多个子任务: 子任务是不可再分的
  4. 每个子任务或者任务都可能会失败, 需要进行任务重试, 重试要遵循幂等设计
  5. 子任务会连接其他系统, 中间有可能会有超时异常, 要防止任务堆积
  6. 这里假设任务提交速率不高, 可以单机处理

问题如下, 请用伪代码描述:

  1. 设计一个框架来实现该功能, 详细描述里面用到的设计模式
  2. 如果提交速率提高到100个请求/s, 需要分布式化, 请问如何设计