首先,感谢您花时间回答这个问题。
我有一个设计问题(有点)。我有一组用户可以执行任务的机器。每项任务可能需要大约5-20分钟才能完成。任意数量的用户都可以执行任务 - 但是,他们可能不关心他们的任务是否排队并且不会立即执行。
作为一名软件开发人员,我希望将每次执行的任务数限制为每批10个,以防止终端系统崩溃。这就是我的想法,这是我的方式:
a) Submit all jobs/tasks to a file.
b) Daemon wakes up every x minutes, checks if there is work to be performed.
b) Get 10 jobs that were submitted earliest and spawn processes to handle the tasks.
c) Daemon sleeps, wakes up again after x minutes and checks how many additional tasks can be performed (given that some of the 10 tasks may still be running), launches the corresponding tasks and goes back to sleep.
你们的任何建议或想法?
答案 0 :(得分:0)
我强烈建议您调查Message Queues。使用消息队列来存储您的作业将允许您的系统扩展,并将处理诸如事务性,持久性,限制等等。否则您将必须编写自己的处理文件锁,事务回滚等事情。
此方法还允许您向外扩展,允许许多计算机订阅单个队列。
有很多免费/开源消息队列服务器,Apache ActiveMQ是最受欢迎的消息队列服务器之一,你应该可以很快地启动并运行它。