什么架构用于具有CPU密集型服务器端任务的网站?

时间:2015-10-27 08:39:02

标签: architecture distributed-system web-development-server

我正在开发一个爱好项目网站。每个用户最多有几百兆字节的数据存储在我的数据库中。用户可以对数据运行各种类型的统计分析,这将导致图形供用户查看结果。用户将从浏览器执行所有这些操作。

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

到目前为止,我正在考虑让Web服务器接收请求,然后Web服务器上的脚本会向执行数字运算的多台计算机的集群发送请求。群集包含主服务器和多个工作服务器。所有请求都来自主人。主控制器监视工作人员并将请求发送给最佳可用工作人员。工作人员捏出数字并将响应发送回Web服务器。然后,Web服务器将数据发送给构建图形的用户。

这个想法有用吗?如果是这样,我将如何创建与主服务器的连接?它的联系信息是什么?是否有良好的负载平衡软件,以便我不必开发主设备?

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

1 个答案:

答案 0 :(得分:0)

传统上这是使用pub/sub模型完成的。确切的实现取决于您使用的语言/平台,但基本实现是:

  1. 客户端创建一个写入数据库的“查询对象”,并在message queue上删除一条消息。
  2. 客户端开始轮询数据库以获取结果(当应用程序基于Web时,通常会设置响应队列)。
  3. 工作人员在闲置时轮询队列工作。当他们找到消息时,他们会选择它,运行“job / query / whatever”,然后将结果写回数据库以供客户端选择。
  4. 这个主题有很多种,比如当请求/响应足够小以适应队列消息本身时,你可以消除中间数据库,但是这在基于Web的轮询模型中变得很难看,因为你需要得到正确的响应回到正确的http响应线程。