为大师工作的奴隶 - 分配工作

时间:2009-09-29 20:04:08

标签: php sqlite distributed-computing

对于我正在开发的新项目,我需要建立一个带有主服务器(主服务器)和多个工作站(从服务器)的集中式计算环境。

主人将收到几种不同间隔和到期日的作业单,例如:

NAME        INTERVAL        EXPIRATION        OPERATIONS
Job A       5 m             9 d               2592
Job B       15 m            30 d              2880
Job C       30 m            90 d              4320
Job D       10 m            50 d              7200
Job E       10 m            20 d              2880
Job F       10 m            10 d              1440

奴隶将通过API接口请求处理新作业,一旦完成,他们会将存储在SQLite中的相关数据发送到服务器并请求新作业。

我认为奴隶部分没有什么困难,但是我面临着主服务器的一个小问题:什么是为奴隶服务的最佳选择?我有以下几种选择:

  1. 预先计算并向数据库添加作业执行的时间。
  2. 以某种逻辑为每个作业提供服务(这是MOD运营商的可能解决方案)?
  3. 随机提供工作。
  4. 说这最后一个选项实际上不是一个选项可能是一件好事,因为我按操作次数(到期/间隔)收费,我认为我的客户不会太高兴,如果他们会为他人付钱。

    我想听听你对我应该怎么做的想法。

1 个答案:

答案 0 :(得分:1)

通过允许奴隶在有时间处理工作时请求工作,您将获得更好的吞吐量。

如果主服务器分配作业,则某些从服务器可能正在等待,而其他服务器则过载。

如果奴隶在一段时间内没有回复答案,您还需要添加一些功能以使作业再次可用。