管理服务器任务列表架构

Manage server task list architecture

我没有任何服务器经验,想知道我应该如何处理这种情况:

我的系统获取文件,对它们进行哈希处理,然后将它们发回,所以当您 post 向它发送一个文件时,它应该对其进行哈希处理,然后给您一个下载 link。

如果我有 1 个用户,这很简单,但是当在网页中我有一个列表,您可以添加许多文件并且文件将一个一个地完成时,我该怎么办?
这个也很简单,我可以根据请求制作一个 cgi(或者它需要的任何东西,cgi 是一个例子),完成工作并使用 Ajax 更新页面但是当多个用户聚集在一起时会发生什么?

例如10个用户来,每人在列表中添加20个文件。我应该为每个请求打开一个 cgi 吗?在这种情况下,我得到了 200 个同时进行哈希处理的实时 cgi。
这似乎不太好,尤其是当用户数量增加时。

我该如何管理这种情况,即多个用户来并分配多个任务并等待他们完成?

语言、神学无特殊限制,对建筑感兴趣

是的,您为每个请求使用一个单独的线程。这就是网络服务器的工作方式。

多线程编程很难,而且很容易搞砸。请使用网络编程框架,无论您使用何种语言,我相信已经存在一个网络编程框架可以抽象线程问题。

当你扩大规模时,是的,你将需要更多的线程,但随后你会做一些事情,比如添加更多的服务器并将其放在负载均衡器后面。请测试您的服务器可以处理多少负载,然后再为这种架构烦恼,但现代服务器可以处理相当多的负载。

我选择了一个带有主服务的系统,cgi 调用将向数据库添加请求,主服务将检查它并执行任务,其他 cgi 调用可以检查状态并获得结果。

此外,服务将使用多线程队列系统来同时处理任务。

我可以不用数据库,但数据库有助于保留日志并使其更易于管理。

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