如何为多种工作设计作业调度程序?

时间:2017-10-26 06:20:26

标签: architecture cluster-computing instance microservices

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

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

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

类别1

  • task1
  • TASK2
  • TASK3

...

类别2

  • 任务1
  • task2
  • TASK3

...

类别3

  • 任务1
  • task2
  • TASK3

...

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

任务1

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

...

TASK2

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

...

TASK3

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

您认为哪一个是更好的设计?我很喜欢你对此的见解。谢谢:)

1 个答案:

答案 0 :(得分:2)

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

  1. 安排工作
  2. 取消安排/删除预定作业
  3. 根据优先级处理(长期有用),也许你  可以根据您拥有的类别确定优先顺序。在这里探索redis,因为它具有保存有序集的惊人功能
  4. 我建议将作业排队服务和作业处理服务(即工作人员)保持不同,因为这样可以使您的应用程序作为黑盒子工作