我有一个aspx网站,有许多网页接受用户输入,从SQL数据库中提取数据,做一些繁重的数据处理,然后将数据呈现给用户。重载网站
该网站是越来越大,并开始把大量的应力的服务器上。
我想要做的是,也许不同的东西一点:
服务器-A将主办的网站,该网站将接受来自用户的输入,这些参数传递给在服务器B上运行的应用程序
服务器-B将从SQL获取数据,执行繁重的数据处理,然后将数据集或数据对象传递回网站。
这可能吗?
我有一个aspx网站,有许多网页接受用户输入,从SQL数据库中提取数据,做一些繁重的数据处理,然后将数据呈现给用户。重载网站
该网站是越来越大,并开始把大量的应力的服务器上。
我想要做的是,也许不同的东西一点:
服务器-A将主办的网站,该网站将接受来自用户的输入,这些参数传递给在服务器B上运行的应用程序
服务器-B将从SQL获取数据,执行繁重的数据处理,然后将数据集或数据对象传递回网站。
这可能吗?
当然,这被称为N-Tier Architecture。
最明显的事情分开是一个数据库服务器,调整以满足数据库的需求(快盘,大量的RAM)和一个或多个独立的Web服务器。
您可以通过将Web服务器和数据库服务器之间的应用程序层上展开。应用程序层可以接受在Web层收集的用户输入,与数据库交互,执行繁重的处理,并将结果返回到Web层。最典型的情况是,您将使用Windows Communication Foundation(WCF)将应用程序层的功能公开给Web服务器。应用程序服务器可能经常被调整为具有非常快的CPU,并且可能比数据库服务器具有更慢的磁盘和更少的内存,具体取决于他们需要做什么。这种解决方案的优点在于,随着应用程序负载的增长,您可以添加越来越多的相同应用程序服务器。
Eric J.为什么你在回答问题时比我快得多?!LOL ...好的工作。 – BentOnCoding
那么,db服务器与Web服务器是分开的。我很想知道如何远程执行大量的数据处理。 – user1481183
@Robotsushi:我猜是幸运的。 –
基于业务模型,您需要一些缓存策略来防止每个输入的繁重计算。 考虑一个股票网站。虽然每分钟有很多交易,但它们不会更新每个交易的市场趋势。他们可以根据定义的时间间隔(每小时,每天...),定义的交互次数(基于计数值)等来安排更新。 当服务器负载较低时,应该完成该任务。通过这种方式,访问者可以在主页上看到股票趋势,但它足够准确。 对于这样的重负载情况,良好的设计是一切,因为有时甚至昂贵的硬件也无济于事。 如果你喜欢,分享一些关于正在做什么的信息。
我会使用负载平衡器像F5
这样你的架构不会改变, ,但我会用n层的方法来你的网站分成数据和表现层 然后负载均衡器将直接每个请求到最轻的服务器
我还会注意到,数据集很好,但成本很高。不要使用数据集从1列中获取1个值。使用数据表,而不是轻一点,并始终使用.dispose()方法释放内存 –
[也许!](http://en.wikipedia.org/wiki/Windows_Communication_Foundation) – asawyer
当然有可能。但可以肯定的是,负载发生在您的Web服务器上?看起来负载实际上在你的数据库上,除非它们在同一台机器上运行。 – Schaliasos
如果同一组输入总是导致相同的输出(并且在后台没有更新/删除/插入事件发生,缓存解决方案也可能是一个很好的选择) – BLSully