重载网站

时间:2012-08-30 17:17:48

标签: c# asp.net .net vb.net

我有一个aspx网站,有许多页面接受用户输入,从SQL数据库中提取数据,做一些繁重的数据处理,然后最终将数据呈现给用户。

该网站越来越大,它开始给服务器带来很大的压力。

我想要做的就是分开一些事情:

Server-A将托管该网站,该网站将接受来自用户的输入并将这些参数传递给在Server-B上运行的应用程序

Server-B将从SQL获取数据,执行大量数据处理,然后将数据集或数据表对象传递回网站。

这可能吗?

3 个答案:

答案 0 :(得分:3)

当然,这被称为N-Tier Architecture

最明显的分离是一个数据库服务器,经过调整以满足数据库(快速磁盘,大量RAM)和一个或多个单独的Web服务器的需求。

您可以通过在Web服务器和数据库服务器之间放置应用程序层来扩展它。应用程序层可以接受在Web层中收集的用户输入,与数据库交互,执行繁重的运算,并将结果返回到Web层。最典型的情况是,您可以使用Windows Communication Foundation(WCF)将应用程序层的功能公开给Web服务器。应用程序服务器可能经常被调整为具有非常快的CPU,并且可能具有比数据库服务器更慢的磁盘和可能更少的内存,具体取决于它们需要做什么。此解决方案的优点在于,随着应用程序负载的增长,您可以添加越来越多相同的应用程序服务器。

答案 1 :(得分:0)

根据业务模型,您需要一些缓存策略来防止每个输入的繁重计算。 考虑一个股票网站。虽然每分钟都有很多交易,但它们不会更新每个交易的市场趋势。他们可以根据诸如定义的间隔(每小时,每天......),定义的交互次数(基于值的计数)等安排更新。 应在服务器负载较低时执行该任务。通过这种方式,访问者可以看到主页上的库存趋势,但足够准确。 对于如此繁重的负载情况,好的设计就是一切,因为有时即使是昂贵的硬件也无济于事。 如果您愿意,可以分享一些有关正在完成的工作的信息。

答案 2 :(得分:0)

我会像F5一样使用负载均衡器

这样你的架构就不会改变 但我会使用ntier方法将您的网站分成数据和表示层 然后负载均衡器会将每个请求定向到负载最轻的服务器