在Web服务器上安排作业

时间:2010-05-23 22:01:16

标签: job-scheduling

我们希望创建像this这样的在线游戏。我认为,这类游戏在网络服务器上有一个调度软件。例如:播放器单击以创建资源并且资源创建将花费一些时间,例如20分钟。(每个资源创建时间将不同)。此消息将发送到Web服务器应用程序,但此消息不会同时处理,例如必须在20分钟后处理。获取消息后,Web服务器应用程序必须将顺序放入队列中。

我们遇到了一些大问题:

1-工作必须由Web服务器应用程序完成即使是播放器退出游戏。我认为我们必须在Web服务器上创建类似Windows服务的东西。我们能做到吗?或者有更好的方法吗?

2-第二个问题取决于问题1.因为我们将拥有许多工作(每个玩家可以在每个Loggin中创建20,30个工作,我们将拥有数千个用户),因此我们的调度系统必须按时工作。有可能的是,在同一秒内有100,1000个工作,如果应用程序无法完成工作,则第二个将使用下一个时间,下一个第二个工作将转移到下一个等等。我们如何才能做到这个问题?

平台:.Net 3.5在Windows 2003 Web服务器上

干杯

Asad Safari

敏捷教练,Scrum Master

4 个答案:

答案 0 :(得分:2)

在unix上,使用cron安排脚本每分钟运行一次 - 然后脚本处理所有作业。

http://en.wikipedia.org/wiki/Cron

答案 1 :(得分:0)

具体答案取决于您使用的技术/语言/平台。在java中,检查Quartz提供的调度服务来安排作业;并检查JMS / MDB以实现您在问题2中提到的异步事件处理。

答案 2 :(得分:0)

我认为我的答案不完全适合您的问题,但它会解决您的问题。这两点都是一次性的。

首先,为什么要自动化执行此事件?据我了解,当且仅当他特定时间创建资源时,您需要让玩家访问他的资源。

嗯,这是我的解决方案: 在您的资源模型类中插入一个名为 usable_since 的字段或类似的字段,当播放器创建其资源时,只需将该字段的值设置为当前时间期望的等待时间。

通过这种方式,你击败了两个问题:

  1. 即使玩家离线也可以使用该资源
  2. 即使有一百万用户,你也不需要设置这么大的工作处理程序。
  3. 我希望它有所帮助。祝你在开发游戏中万事如意。让它变得有趣!

答案 3 :(得分:0)

我有一个类似的问题,因为我还在开发一个依赖于服务器端调度的应用程序:Job-Scheduling in Play! Framework。我使用Play Framework (Java),它就像一个魅力;除了我没有经验可以在不使服务器瘫痪的情况下同时安排多少个工作。