具有 cpu 密集服务器端任务的网站应使用什么架构?

what architecture to use for website with cpu intensive server side tasks?

我正在开发一个业余爱好项目网站。每个用户在我的数据库中存储了多达数百兆字节的特定于他们的数据。用户可以运行 对数据进行各种类型的统计分析,这些分析将生成图表供用户查看结果。用户将从浏览器执行所有这些操作。

我的问题是如何设置服务器端?至少需要支持几千个并发用户。每个用户都应该在会话中对其数据集进行一些查询。显然我不能只有一个网络服务器。

到目前为止,我的想法是让网络服务器接收请求,然后网络服务器上的脚本将请求发送到由几台机器组成的集群,这些机器执行数字 c运行ching。该集群包含一个 master 和几个 worker。所有请求都交给主人。 master 监视 worker 并将请求发送给最可用的 worker。工作人员 c运行 计算出数字并将响应发送回 Web 服务器。 Web 服务器然后将数据发送给构建图形的用户。

这个想法行得通吗?如果是这样,我将如何创建与主人的连接?它的联系信息是什么?有没有好的负载均衡软件可以不用开发master?

另外,公司是如何做类似的事情的,或者更确切地说,解决这个问题的最佳方法是什么?我试图查找它,但找不到任何细节。提前致谢。

传统上这是使用 pub/sub 模型完成的。确切的实现取决于你使用的是什么language/platform,但是基本的实现是:

  1. 客户端创建其中一个 "query objects" 写入数据库,并在 message queue.
  2. 上放置一条消息
  3. 客户端开始轮询数据库以获取结果(当应用程序基于 Web 时,否则通常会设置响应队列)。
  4. 工作人员在闲置时轮询队列中的工作。当他们找到一条消息时,他们会选择它,运行 "job/query/whatever",并将结果写回数据库以供客户端选择。

这个主题有很多变体,例如当 request/response 足够小以适合队列消息本身时,您可以消除中间数据库,但这在基于网络的轮询模型中变得很丑陋,因为您需要将正确的响应返回到正确的 http 响应线程。