【问题标题】:how to design a job scheduler for many kinds of job?如何为多种作业设计作业调度程序?
【发布时间】:2017-10-26 06:20:25
【问题描述】:

我是初级开发人员,想问一个关于作业调度程序的设计/架构的问题。

我正在为管理多个任务的调度程序设计架构。 有多个类别(超过 70 个),例如电影、购物、食品。 每个类别都有三个或更多需要执行的任务。 所以我的调度器需要在需要的时候为每个类别执行任务。 每个类别的任务相互独立。 因此,类别 A 的任务可以根据计划与类别 B 的任务并行运行。

所以,我有两种类型的设计可以做到这一点。 一个是将每个类别作为单独的服务,在单独的实例上运行。这样,它是模块化的,但即使每个类别都没有运行任务,系统也会消耗太多实例(超过 70 个)。

类别1

  • 任务1
  • 任务2
  • 任务3

...

类别2

  • 任务1
  • 任务2
  • 任务3

...

第三类

  • 任务1
  • 任务2
  • 任务3

...

我的另一个想法是按每个任务对类别进行分组。因此,每个任务本身都成为一个模块,并且在每个任务内部,都有属于不同类别的特定任务的集合。

任务1

  • task1 与 category1 相关
  • task1 与 category2 相关
  • task1 与 category3 相关

...

任务2

  • task2 与 category1 相关
  • task2 与 category2 相关
  • task2 与 category3 相关

...

任务3

  • task3 与 category1 相关
  • task3 与 category2 相关
  • task3 与 category3 相关

你认为哪个设计更好?我希望你能对此有所了解。谢谢你:)

【问题讨论】:

标签: architecture cluster-computing instance microservices


【解决方案1】:

安排工作必须具备这些基本功能

  1. 计划作业
  2. 取消计划/删除计划作业
  3. 基于优先级的处理(长期有用),也许你 可以根据您拥有的类别进行优先级排序。在这里探索 redis,因为它具有保存有序集的惊人功能

我建议保持作业排队服务和作业处理服务(即工作人员)不同,因为这将使您的应用程序能够像黑匣子一样工作

【讨论】:

    猜你喜欢
    • 2020-12-01
    • 1970-01-01
    • 2013-09-15
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多