2010-07-27 263 views
6

我正在研究asp.net(新手),我想了解为网站做什么“负载平衡”。该网站将被多个用户和资源(数据库,Web服务,..)使用。ASP.Net负载平衡

如果有人可以帮助我理解asp.net网站的负载平衡概念,我会非常感激。
谢谢。

回答

1

这是什么? 负载平衡只是指在两台或多台计算机之间分配工作负载。作为一个概念,它不是asp.net独有的。尽管为您的数据库和Web服务器分别安装不同的计算机可称为“负载平衡”,但它通常指的是使用多台计算机为单个角色服务,例如具有多个Web服务器。

你应该担心吗?可能不是。你已经有性能问题了吗?你的数据库和Web服务器在他们自己的机器上?如果您确实发现服务器资源紧张,则可能会比扩展(负载平衡)更容易扩展(功能更强大的单个机器)。现在,如果你的代码体面,一个专用的盒子可以处理大量的流量。

+0

有一件事需要考虑“你应该担心吗?”问题:如果你正在为客户建立网站,那么理解这些东西总是很好的。过去,我一直在通过让客户决定在多个负载平衡的网络服务器上托管一个站点来解决这个问题,但从未考虑过这个问题。如果你自己不控制托管环境,理解所有可能性是很好的。 – Carson63000 2010-07-28 01:08:41

+0

的确如此。但是如果客户有一个自称为新手的人试图用这种可能性来解决问题,那么不管他是否试图规划负载均衡,情况都不会很好。能够预测这种事情并且执行得好并不是一件简单的事情。 – Larsenal 2010-07-28 05:39:11

0

在编程意义上,负载均衡不适用于ASP.NET;它适用于尝试将服务器负载分布在两台或更多台机器上的技术,而不是将其全部用在一台机器上。除非你有成千上万(几百万?)的用户,否则你可能不需要担心。

查看Wikipedia article了解更多信息。

0

负载平衡并非专门针对任何技术堆栈,无论是asp.net,jsp等。负载均衡是通过多台服务器将传入请求分发到网站。这通常使用软件或硬件负载平衡器来完成。负载均衡器位于两个或更多Web服务器的前端,并委派传入流量。虽然这种技术不限于网络服务器。 Load Balancing

享受!

-2

我想补充一点,它确实不值得担心。当你需要一个负载均衡器的时候,你可能买得起一个neato新手,并且会话很紧张,所以你甚至不需要处理会话boogeyman。

4

您可能希望在开发时注意到一个与负载平衡相关的问题:存储会话状态的位置。 This MSDN article可以很好地概括你的选择。

如果您使用“out-of-process”或“sql-server-mode”会话状态管理实现您的asp.net系统,那么稍后如果您决定引入负载平衡器到您部署的系统:

  1. 您的负载均衡器不需要处理会话亲缘关系。正如上面提到的一个海报,所有现代负载平衡器无论如何处理,所以这是一个小问题。
  2. Web-gardens(一种IIS /服务器实现的负载平衡器)需要使用“进程外”或“sql-server-mode”会话状态管理。所以如果你的系统已经配置好了,你可以更近一步地使用网络花园。
0

我从来没有使用它,但一个选项是IIS Application Request Routing

IIS应用程序请求路由(ARR) 2.0使Web服务器管理员,托管服务提供商和内容 分发网络(CDN),以增加通过基于规则的 路由,客户机和主机 Web应用程序的可扩展性和 可靠性命名 亲和力,HTTP 服务器请求的负载均衡和分布式磁盘缓存

0

在一个典型的Web服务器/数据库的情况下,该数据库几乎是ALWA ys保证先装入机器。这是因为处理数据存储需要更多的资源。在开始考虑负载均衡Web服务器之前,您需要考虑如何负载平衡数据库。

跨多个服务器传播一个数据库比负载均衡Web服务器困难得多。可以使用的技术之一是sharding(或水平分区)。这是一些记录存储在一台服务器上的地方,其他记录则存放在另一台服务器上。例如ID为1-900000的记录位于服务器1上,记录900001-位于服务器2上。

与DB负载平衡相比,跨多个ASP.NET服务器分布负载不会过于复杂。大多数会话问题可以通过使用进程外会话和/或从不直接与Application.Cache交谈来轻松缓解。另一方面,数据负载平衡很难,需要大量的计划和试验和错误。在大多数情况下,与负载均衡DB交谈需要使用支持它的ORM(例如NHibernate)或您自己的数据访问层。原因在于您需要从使用数据库的代码中建立连接,以便决定与哪个DB交谈的决定在一个地方处理。

0

确切的解决方案是使用存储过程将会话保存到SQL Server中。阅读会话调用'SessionCheck'存储过程。