Web Farm和Web Garden的区别
在这篇博文中,我将确切剖析Web Farm和Web Garden的区别和原理,以及使用它们的利弊。进一步地,我将介绍如何在各个版本的IIS中创建Web Garden。
英文原文 | Abhijit Jana | 2010年10月2日
概述
ASP.NET开发服务器负责处理所有来自客户端的请求和响应(开发阶段)。完成开发后,为了让他人可以访问你的站点,你必须将站点部署到服务器上,这将涉及到Web服务器。Web服务器负责处理所有来自客户端的请求,并给予响应。下图展示了ASP.NET Web应用程序典型的单IIS部署架构。
客户端请求资源,IIS处理请求并响应。
Web Farm
上述架构适用于只有一个Web服务器,且多个客户端从同一服务器请求资源的场景。如果站点的流量剧增,单个独立的服务器不足以处理客户端的请求。为了分担流量,您可能需要将应用程序部署到多台服务器。这就是所谓的“Web Fram”。因此,当您将站点部署到通过负载均衡器(Load Balancer)关联的多台Web服务器,就构成了“Web Farm”。下图展示了Web Farm的整体布局。
在通常的Web Farm架构中,单个应用程序被部署到多个IIS服务器(由上图可知,应是“Web服务器”),服务器通过负载均衡器以VIP(Virtual IP)的形式进行连接。负载均衡器再连接到外网。因此,来自客户端的请求,首先经过负载均衡器。负载均衡器根据当前每个服务器的流量将请求路由到相应的Web服务器。这些Web服务器可能共享相同的数据库服务器(DB Server),也可能在后端使用重复服务器(Replicated Server)。
总之一句话,当我们在多个Web服务器上部署同一Web应用程序来均衡负载就叫做“Web Farm”。
Web Garden
在开始讲解Web Garden之前,我希望您对应用程序池(Application Pool)和工作进程(Worker Process)的基本原理有所了解。如果您已经读过《How IIS Processes ASP.NET Request?》,我有理由相信您对上述概念不会陌生。
在IIS中,工作进程(Worker Process)负责运行ASP.NET应用程序,所有ASP.NET功能都运作在工作进程的范围之内(作者的这种描述有点别扭)。工作进程负责处理所有的请求、响应、会话数据、存储数据。应用程序池(Application Pool)是工作进程的容器。应用程序池用于隔离IIS工作进程,为Web应用程序提供高安全性、高可靠性和高可用性。
默认情况下,每个应用程序池包含一个工作进程。包含多个工作进程的应用程序池(原文为Application,疑为作者笔误)即被称为“Web Garden”。下图是一个典型的Web Garden应用程序。
在上图中,您可以看到其中一个应用程序池中包含多个工作线程,这就构成了Web Garden。
因此,Web Farm是指将同一Web应用程序部署到多台服务器,并基于服务器的负载进行访问;而Web Garden是指单个应用程序池包含多个工作线程。
在IIS 6和IIS 7中创建Web Garden
现在,我将向您展示如何在IIS 6和IIS 7中更改Web Garden的工作线程数。在IIS 6中,右键单击“应用程序池” > “属性” > 转到“性能”选项卡。
在“性能”选项卡部分,有一个“Web Garden”的选项,默认值为“1”,您可以将该值设置为您需要的数值。
在IIS 7中,右键单击“应用程序池” > 转到“高级设置” > 找到“进程模型”,下面有个“最大工作进程”项。您可以修改默认值(默认为1)来创建Web Garden。
在上图中,您还可以看到Web Garden的定义。
您还可以参考我早前关于当前主题的文章。>>
Web Farm和Web Garden的优点
现在,让我们一起来看Web Farm和Web Garden的优点。
Web Farm的优点
- 它提供了高可用性(或者高容错性)。如果Farm中的任一服务器宕掉,负载均衡器可以将请求重定向到其他服务器。
- 提高了对客户端请求的响应速度。
- 提高了Web应用程序的稳定性,减少了应用程序的故障率。
- 可将会话和其他资源集中存储,以便让所有的服务器都能访问。
Web Garden的优点
- 通过工作进程间的请求共享,提高了应用程序的可用性(或者性能)。
- Web Garden通过处理器亲和性(Processor Affinity)对应用程序进行分配(基于参数和标记)。
- 减少物理空间消耗。
Web Farm模式下会话管理
默认情况下,会话模式被设置为InProc。该模式下会话数据存储在工作进行中。但是,在Web Farm模式中,所有服务器可以共享同一个会话,我们可将会话模式设置为State Server或者SQL Server模式。这样, 即使某些服务器宕掉,请求通过负载均衡器转移到其他服务器,会话数据也可共享。
在上图中,您可看到两个IIS服务器共享同一份存储在工作进程外的会话数据。您可以参考我早先的一篇文章《Exploring Session in ASP.NET》,文章中我揭示了如何在外部进程模式中配置会话模式。
Web Garden模式下会话管理
当我们使用Web Garden时,客户端请求由不同的工作进程进行处理,所以会话模式必须是上面所说的外部进程会话模式。对于Web Garden,我们必须将会话放到同一服务器的不同工作进程中。
译者注:应用程序涉及Web Garden可能需要配置<processModel>配置节,该配置节由aspnet_isapi.dll读取,托管代码不读取,这里不做详细介绍。
总结
Web Farm是指将同一Web应用程序部署到多台服务器,并基于服务器的负载进行访问;而Web Garden是指单个应用程序池包含多个工作线程。
在这篇博文中,我阐述了Web Farm和Web Garden的基础知识。本文囊括了Web Farm和Web Garden的基本信息和概念,至于Web Farm和Web Garden的配置细节我将在其他文章中进行阐述。更多信息请参考以下文章:
- Boosting performance using an IIS web garden
- How-To Configure Session State in a Windows Web Farm
- Role of Web gardens and web farms in ASP.NET
希望此文对您有所帮助。
Web Farm和Web Garden的区别的更多相关文章
- nginx+iis、NLB、Web Farm、Web Garden、ARR
nginx+iis实现负载均衡 在win2008R2上使用(NLB)网络负载均衡 NLB网路负载均衡管理器详解 [译文]Web Farm和Web Garden的区别? IIS负载均衡-Applicat ...
- Web Farm 和Web Garden
这两个都是提高网站性能的服务器端技术 1.Web Farm:如果应用程序被多个服务器托管,这种情况就可以称作Web Farm. 2.Web Garden: 指的是一个应用程序可以分成多个进程(w3wp ...
- What is the difference between Web Farm and Web Garden?
https://www.codeproject.com/Articles/114910/What-is-the-difference-between-Web-Farm-and-Web-Ga Clien ...
- 趣谈StateServer在Web Garden,Web Farm下的使用
上一篇翻译的博客[译文]漫谈ASP.NET中的Session已经介绍了Session的基础知识,如果看过了的话对Session应该有了一个比较清晰的认识了,现在我来谈谈我所遇到的困境以及对Sessio ...
- JavaEE中Web服务器、Web容器、Application服务器区别及联系
在JavaEE 开发Web中,我们经常会听到Web服务器(Web Server).Web容器(Web Container).应用服务器(Application Server),等容易混淆不好理解名词. ...
- Web Fram 2 for IIS7.X(Microsoft Web Farm Framework)
Microsoft Web Farm Framework (WFF) 2.0 是微软开发的.基于IIS 7.x的小插件,能够帮助我们轻松实现Web网站的高性能.高可用性,用来在Web服务器群上提供和管 ...
- web farm 讨论引出
关于web farm 有成功的实施的文档没 用它还不如 用nginx,简单易用. Nginx for windows的运行效果咋样 windows iis无敌 玩nginx就不要用win系统,必须l ...
- [转帖]JavaEE中Web服务器、Web容器、Application服务器区别及联系
JavaEE中Web服务器.Web容器.Application服务器区别及联系 https://www.cnblogs.com/vipyoumay/p/5853694.html 在JavaEE 开发W ...
- eclipse中build path与Web Deployment Assembly的作用,区别
转自:https://blog.csdn.net/heart_mine/article/details/79402792 以下内容只为做个笔记记录已下,有问题可以留言,欢迎补充. 今天在eclipse ...
随机推荐
- ADODB.Connection 错误 '800a0e7a'。。
今天帮同学调程序的时候发现的:错误提示如下: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /hua1/manage/inc/conn.asp, ...
- linux RTC 驱动模型分析【转】
转自:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 RTC(real time clock)实时时钟,主要作用是给Linux系 ...
- debian系统安装Thinkpad T410s的无线网卡驱动:centrino Advanced-N 6200 2x2 AGN
前几天搞到手一台小黑:T410s.自带系统是win7.由于想学习debian,所以就搞成了双系统,安装了一套debian 6.0. 可是让我困惑的是在debian下,无法使用T410s的网卡,因为默认 ...
- BZOJ 1257 余数之和sum
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1257 题意:计算sigama(m%i)(1<=i<=n). 思路: 这样就简 ...
- from 表单提交
html端代码 <body> <div id="dlg" class="easyui-panel" buttons="#dlg-bu ...
- 另类方法解决设计Web页面出现:Error Creating Control
在B/S开发的过程中,经常会遇到这样的提示:Error Creating Control ,而这些页面明明之前是可以打开的,但还是出现如下图所示: 网上找到的方法是把控件初始化放在OnInit里去写, ...
- Oracle® Database Patch 19121551 - Database Patch Set Update 11.2.0.4.4 (Includes CPUOct2014) - 傲游云浏览
Skip Headers Oracle® Database Patch 19121551 - Database Patch Set Update 11.2.0.4.4 (Includes CPUOct ...
- Windows下PhpStorm结合WAMP开发Phalcon应用的配置
最近要利用Phalcon框架开发PHP应用,因为以前基本没接触过PHP更没用过PHP框架,结果整环境整IDE配置什么的花了好长时间 学习慕课网上的PHP入门教程安装了WAMP(windows+apac ...
- hihoCoder hiho一下 第四十八周 题目1 : 拓扑排序·二
题意: 给定一个拓扑图,其中部分结点含有1个病毒,每个结点只要收到病毒就会立即往出边所能到达的点传播,病毒数可叠加,求所有结点的病毒数总和. 思路: 根据拓扑的特点,每个入度为0的点肯定不会再被传播病 ...
- matlab中,在灰度解剖图上叠加阈值图,by by DR. Rajeev Raizada
1.参考 reference 1. tutorial主页:http://www.bcs.rochester.edu/people/raizada/fmri-matlab.htm. 2.speech_b ...