ASP.Net负载平衡

6

我正在学习asp.net(新手),并尝试了解为网站进行“负载均衡”的含义。该网站将被多个用户和资源(数据库、Web服务等)使用。

如果有人能帮我理解asp.net网站的负载均衡概念,我将不胜感激。
谢谢。

8个回答

4
您需要在开发时注意的一项负载均衡相关问题是:您存储会话状态的位置。 如果您使用“进程外”或“SQL Server模式”会话状态管理来实现ASP.NET系统,这将为您提供一些额外的灵活性,如果您决定向部署的系统引入负载均衡器:
1. 您的负载均衡器不必处理会话亲和性。正如某位帖子所述,所有现代负载均衡器都会处理它,因此无论如何,这只是一个小问题。
2. Web-gardens(一种IIS /服务器实施的负载均衡器)需要使用“进程外”或“SQL Server模式”会话状态管理。因此,如果您的系统已经配置了这种方式,您将更接近能够使用Web-gardens。
这里有一篇MSDN文章可以对您的选择进行概述,点击这里查看。

1

这是什么? 负载均衡简单地指将工作负载分配在两台或更多计算机之间。作为一个概念,它并不是 asp.net 所独有的。虽然将数据库和 Web 服务器分别放在不同的机器上可以称为“负载均衡”,但更常见的是使用多台机器来扮演单一角色,比如拥有多个 web 服务器。

你应该担心吗? 可能不需要。你已经有性能问题了吗?你的数据库和 Web 服务器是否在单独的机器上?如果你发现服务器资源过度紧张,升级一个更强大的单一机器可能比进行负载均衡更容易。如今,如果你的代码是合理的话,专用机箱可以处理大量流量。


关于“你是否应该担心它?”这个问题,有一件事需要考虑:如果你为客户构建网站,了解这些事情总是很好的。过去我曾经因为客户决定在多个负载均衡的Web服务器上托管网站而遭受打击,而当时并没有考虑到这一点。如果你不能控制托管环境,了解所有可能性是非常重要的。 - Carson63000
没错。但是如果客户有一个自称新手,试图处理那种可能性的事情,无论他是否尝试规划负载平衡,结果都不太可能好。能够预见这种情况并且执行得好并不是一件简单的事情。 - Larsenal

0

确切的解决方案是使用存储过程将会话保存到SQL Server中。要读取会话,请调用“SessionCheck”存储过程。


0
在编程方面,“负载均衡”与ASP.NET无关;它是一种技术,试图将服务器负载分布在两台或更多机器上,而不是全部用于一台机器上。除非你会有很多千万级别的用户,否则你可能不需要担心它。
查看维基百科文章获取更多信息。

0

负载均衡不仅适用于任何技术栈,如asp.net、jsp等。负载均衡是将网站的传入请求分散到多个服务器上。通常使用软件或硬件负载均衡器来完成此操作。负载均衡器位于两个或多个Web服务器前面,并委派传入的流量。尽管这种技术不仅限于Web服务器。负载均衡

享受吧!


0

我从未使用过它,但一个选择是 IIS 应用请求路由

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


0
在典型的Web服务器/数据库场景中,几乎总是保证先将数据库加载到机器上。这是因为处理存储数据需要更多的资源。在考虑负载均衡Web服务器之前,您需要考虑如何负载均衡数据库。
将一个数据库分布在多个服务器上比负载均衡Web服务器要困难得多。可以使用的技术之一是分片(或水平分区)。这是其中一些记录存储在一个服务器上,而其他记录存储在另一个服务器上的情况。例如,ID 1-900000的记录位于服务器1上,而记录900001及以上的记录位于服务器2上。
与数据库负载平衡相比,将负载分散到多个ASP.NET服务器上并不过于复杂。大多数会话问题可以通过使用进程外会话和/或永远不直接访问来轻松解决。另一方面,数据负载平衡很难,并且需要大量的规划和试错。在大多数情况下,与负载平衡的数据库通信需要使用支持它的ORM(例如NHibernate)或您自己的数据访问层。原因是您需要从使用数据库的代码中删除建立连接,以便处理要访问哪个数据库的决策。

-2
我想说的是,这真的不是什么需要担心的事情。当你需要负载均衡器的时候,你可能已经买得起那些带有粘性会话功能的新型负载均衡器了,这样你甚至都不用处理会话问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接