【发布时间】: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 相关
你认为哪个设计更好?我希望你能对此有所了解。谢谢你:)
【问题讨论】:
-
老实说,作业调度和管理是一个广泛的话题,所以除非这是一个有趣的项目,否则我会使用市场上可用的服务/解决方案之一,两者都是开源的(如 quartz-scheduler.org)和商业(如infinitedata.com/products/schedulein)
标签: architecture cluster-computing instance microservices