何时使用负载平衡?

我正在进入networking开发的更复杂的部分。 这可能不是最好的地方。 但是,什么时候最好为web项目获得负载平衡? 我知道这取决于良好的devise/糟糕的devise,有多less用户可以访问网站,而不会影响性能。 但是,我打算编写一个新的项目,可能有很多的用户,我想知道是否应该考虑负载平衡的蝙蝠。 意见欢迎; 提前致谢!

我不应该也认为这个项目最有可能是asp.net(webforms或mvc尚未决定)与mongodb或pgsql的后端(也仍然决定)。

负载均衡也可以是高可用性的一种形式。 如果您的Web服务器出现故障怎么办? 替换它可能需要很长时间。

一般来说,当你需要考虑吞吐量时,你已经是很有钱了,因为你拥有大量的用户。

Stackoverflow每个月只有几个服务器(6个左右)提供1000万独特用户。 考虑一下,如果在8个热门时间内每秒持续生成10个HTTP响应,则每天要处理多少个请求:10 * 3600 * 8 =每天288000个网页展示。 你很快就不会有这么多的用户。

如果你这样做,你优化你的应用程序每秒20个请求和CPU核心,这意味着你每秒钟获得80个商品服务器上的请求。 这是很多

以后添加一个负载均衡器通常很容易。 LB可以用cookie标记每个用户,这样他们就可以被固定在一个特定的目标上。 你的应用程序不会注意到不同之处。 通常。

这是电子商务网站吗? 如果是这样的话,那么真正的问题就是“每过一个小时,网站就停止运转,你输了多少钱?” 如果这个数字很大,那么我会优先考虑负载平衡。

我所看到的一个更重要的架构决策会影响到这一点,就是使用会话变量。 如果您的用户在访问期间在不同的服务器上结束,您需要能够提供无缝的体验。 会话变量不会从服务器传输到服务器,所以我会避免使用它们。

我在工作中支持这样的解决方案。 我们在三台Windows 2k8服务器(由两个主要/辅助SQL server 2008数据库支持)上运行四个(以前为八个).NET电子商务网站,每天约有1300个(合并)订单。 每个站点都是负载平衡的,并保持在“农场”保持活力。 关于这一点的好处是,我们可以将一台服务器停下来进行维护,而用户却没有注意到任何事情。 当我们恢复时,我们重新启用了我们的复制服务,并且我们的更改被相当快地推送到另外两台服务器。

所以是的,我会建议给一个像这样的解决方案。

这里的参数可能会影响到另一个,并减慢性能。

  • 带宽
  • 处理
  • 同步

必须与你有多少用户 ,以及你赢得服务的媒体

所以如果你不得不提供大量的视频/文件,你需要很多的服务器来提供它。 假设你没有,接下来觉得需要检查,用户和处理。

从我的经验来看, 缓慢的处理是锁定会话 。 因此,加快处理速度的一大步骤是进行全面的自定义会话处理,并且您的页面不会互相锁定,并且您可以处理的问题太多,而且用户数量太多。

现在下一步,假设你有一个数据库来保存所有的数据,从负载平衡和许多计算机中获取技巧是使本地缓存你将要显示的内容。

所以这个想法实际上是为了避免太多的锁定让用户等待另一个,第二个想法是在每个不同的计算机上有一个本地缓存,这个缓存是由主数据库数据动态生成的。

ref: 在处理另一个网络应用程序共享相同的会话时阻止Web应用程序

完全取代ASP.Net的会话

调用aspx页面随机缓慢返回图像

一直在线

还有一个参数是你可以制定一个解决方案,可以处理一个服务器的情况,所有的一个:)风格,在那里你可以实际使用更多的服务器的备份原因。 所以,如果一台服务器出于任何原因(例如更新和重新启动),其余的服务器仍然可以工作和服务。

正如你所说,这取决于是否/何时引入负载平衡。 这取决于性能和您想要服务的用户数量。 LB还提高了应用程序的可靠性 – 当一个系统崩溃时,它不会停止。 如果你可以看到你的项目越来越大,并为很多用户提供服务,那么我设计你的应用程序就可以升级到LB,所以不要做任何非标准的事情。 尝试摆脱自制的解决方案,并始终遵循良好的做法。 如果以后你真的需要LB,它不应该被要求改变你的应用程序。

UPDATE

您可能需要提前思考,但不要花太多的代价来使应用程序复杂化。 不要去偏执,并准备一切工作闪电'以防万一'。 例如,不要担心会话 – 会话管理可以随时轻松移动到SQL server,这是使用LB的方法。 如果将来遇到一些瓶颈,缓存也将有所帮助,但是您不需要马上实现 – 良好的设计(稳定的接口),分离和解耦将允许稍后添加缓存。 所以再坚持好的做法,不要关门,也不要马上把它们全部打开。

你可能会觉得这篇文章很有趣。