我有一个aspx网站的许多页面接受用户输入,从SQL数据库中拉数据,做一些繁重的数据处理,最后呈现给用户的数据。
网站变得越来越大,开始给服务器带来很大的压力。
我想做的也许是把事情分成几部分:
服务器A将托管网站,网站将接受用户的输入,并将这些参数传递给在服务器B上运行的应用程序
Server-B将从SQL获取数据,执行繁重的数据处理,然后将dataset或datatable对象传递回网站。
这个是可能的吗?
发布于 2012-08-31 01:19:07
当然,这被称为N-Tier Architecture。
要分离的最明显的东西是一个数据库服务器,调优以满足数据库(快速磁盘,大量RAM)和一个或多个单独的web服务器的需求。
您可以通过在web服务器和数据库服务器之间放置一个应用层来扩展。应用层可以接受在web层中收集的用户输入,与数据库交互,执行繁重的处理,并将结果返回到web层。最典型的情况是,您将使用Windows Communication Foundation (WCF)向web服务器公开应用层的功能。应用程序服务器可能经常调整为具有非常快的CPU,并且可能具有比数据库服务器更慢的磁盘和更少的内存,具体取决于它们需要执行的操作。此解决方案的优点在于,随着应用程序负载的增加,您可以添加越来越多相同的应用程序服务器。
发布于 2012-08-31 01:27:46
根据业务模型,您需要一些缓存策略来避免对每个输入进行繁重的计算。考虑一个股票网站。虽然每分钟都有很多交易,但他们不会更新每一笔交易的市场趋势。他们可以根据定义的时间间隔(每小时,每天...),定义的交互次数(基于值的计数)等来安排更新。该任务应该在服务器负载较低时完成。通过这种方式,访问者可以在主页上看到股票走势,同时又足够准确。对于这样的高负载场景,好的设计就是一切,因为有时即使是昂贵的硬件也不会有太大帮助。如果你愿意,可以分享一些正在做的事情的信息。
发布于 2012-08-31 03:38:46
我会使用像F5这样的负载均衡器
这样,您的体系结构不会改变,但我将使用ntier方法将您的站点划分为数据层和表示层,然后负载均衡器会将每个请求定向到负载最轻的服务器。
https://stackoverflow.com/questions/12202153
复制相似问题