文档介绍:.NET 培训: Web Farm 和 Web Garden 的区别
开发服务器负责处理所有来自客户端的请求和响应(开发阶段)。完成开发后,
为了让他人可以访问你的站点,你必须将站点部署到服务器上,这将涉及到 Web 服务器。
Web 服务器负责处理所有来自客户端的请求,并给予响应。下图展示了 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 )的基本原理有所了解。
在 IIS 中,工作进程( Worker Process )负责运行 应用程序,所有
功能都运作在工作进程的范围之内 (作者的这种描述有点别扭) 。工作进程负责处理所有的
请求、响应、会话数据、存储数据。应用程序池( Application Pool )是工作进程的容器。
应用程序池用于隔离 IIS 工作进程, 为 Web 应用程序提供高安全性、 高可靠性和高可用性。
默认情况下, 每个应用程序池包含一个工作进程。 包含多个工作进程的应用程序池 (原
文为 Application ,疑为作者笔误)即被称为 “Web Garden” 。下图是一个典型的 Web
Garden 应用程序。
在上图中,您可以看到其中一个应用程序池中包含多个工作线程,这就构成了