2015-11-08 55 views
0

我没有与服务器的任何经验,想知道我应该怎么管理这种情况:管理服务器的任务列表架构

我的系统中获取文件,哈希他们,然后把他们送回所以当你发布文件对它,它应该散列它,然后给你一个下载链接。

它是如此简单,如果我有1个用户,但是当网页我有,您可以添加多个文件,并完成一个个文件的列表,我应该怎么办?
这一次也很简单,我可以做一个CGI(或什么都需要,CGI就是一个例子)每个请求,做的工作和Ajax更新页面,但是当多用户走到一起,会发生什么?

例如10个用户来的每个在列表中添加20个文件。我应该为每个请求打开一个cgi吗?在这种情况下,我得到200个同时哈希的活cgi。
这似乎不好,特别是当用户数量会增加。

如何管理这种情况是多用户来给多任务,应该等待他们完成?

没有语言或神学任何特殊的限制,我对建筑感兴趣。

回答

0

我选择一个系统,与主服务和CGI调用将请求添加到资料库,并主要服务将检查并做任务和其他的CGI调用可以检查状态并得到结果。

而且服务将使用多线程队列系统同时处理的任务。

我可以把它无需DB但DB有助于保持一个日志,并使其更易于管理。

如果有任何人有更好的想法,请分享。

0

是的,你可以使用一个单独的线程为每个请求。这是Web服务器的工作原理。

多线程编程是很难的,而且容易陷入困境。请使用网络编程框架,无论您的语言如何,我确定已经存在一个网页编程框架,它可以抽象出线程问题。

当你扩展,是的,你将需要更多的线程,但你不喜欢的东西添加更多的服务器,并把它负载平衡器后面。现在的服务器可以处理相当多的负载,请测试你的服务器在处理这种架构之前可以处理多少负载。

+0

Thanks.So你说我应该为每个用户一个线程,所以当1000用户前来我将有1000个线程的工作?我想用CGI或php,使其或者我可以做一个多线程系统帕斯卡的CGI或者PHP使用它并在Apache中托管它们。你认为什么?我不应该使用有限的系统(例如10个同时工作的最大值)和一个请求系统,因此一个请求添加请求并获得一个票号并返回并调用check为了获得地位,我希望你明白我在说什么。 – user3656830

+0

Apache已经为每个用户创建一个线程,同一个OS线程将用于PHP。 Apache有能力限制并发线程数:http://stackoverflow.com/questions/3389496/how-do-you-increase-the-max-number-of-concurrent-connections-in-apache但是我不'除非你知道你在做什么,否则建议你捅这个。 –

+0

如果您确实有1000个并发用户,则需要查看我在答案中讨论的负载平衡器解决方案。 –