第4章 部署模式 Three-Tiered Distribution(三级分布)
影响因素
Tiered Distribution 中讨论的影响因素也适用于此模式。有关这些通用影响因素的讨论,请参阅"Tiered Distribution"。下列影响因素仅适用于 Three-Tiered Distribution 模式:
- 数据库负载所具有的重要性要求数据库应当使用专用的服务器(或整个群集)。
- 安全策略禁止将公司数据库驻留在直接连接到 Internet 的服务器上。
- 大量的用户使用他们自己的计算机或设备来访问解决方案。例如,您有一个 Web 应用程序,该应用程序具有大量访问公共应用程序的用户。
- 必须能够扩展客户端级,以便应付用户数量的大幅度增长。
- 客户端需要利用共享的数据库来执行事务,并且您希望跨越解决方案共享业务逻辑。
- 客户端、应用程序逻辑和数据库的可伸缩性要求差异很大。
解决方案
围绕三个物理级构造应用程序:客户端、应用程序和数据库。图 1 显示了此三级分布。
图 1: 三级分布
客户端级
客户端级与解决方案的用户交互。如果您的应用程序遵守 Three-Layered Services Application,那么该级将驻留表示层组件。
硬件
对于 Web 应用程序,客户端级由用户工作站、PDA 以及驻留 Web 浏览器的其他设备组成。对于面向服务的解决方案,该级由使用服务的计算机和设备组成。
客户端级中的计算机相互独立,并且不应通过硬编码的方法来引用应用程序级资源;而应使用域名系统 (DNS)、轻型目录访问协议 (LDAP) 或通用描述、发现和集成 (UDDI) 等名称服务来查找服务器和服务。
该 级中的计算机数目可能十分庞大。Web 应用程序的这一级本质上具有数目不限的计算机。解决方案通常需要向上扩展,以应付用户及其关联的计算机数目的大幅度增长。客户端级不对它所包含的计算机数 或者您添加计算机处理能力加以任何限制。但是,客户端级中的所有计算机最终都必须与应用程序级交互。应用程序级的可伸缩性最终会制约客户端级处理新增用户 或每个用户所增加的工作负荷的能力。
软件
客户端级中的操作系统和解决方案软件针对响应的用户交互进行配置和优化,并且必须至少提供下列两个服务:
- 表示解决方案的用户界面的机制。对于 Web 应用程序,此机制是 Web 浏览器。对于胖客户端,它可能是自定义的 UI 框架,甚至可能由操作系统提供。
- 需要软件基础设施来与其他级通信。胖客户端的一个示例是 TCP/IP 套接字。HTTP 可以对 Web 应用程序提供此服务。
安全性
客户端级通常存在于不同于其他级的单独安全环境中,并且该级中的各个计算机通常处于它们自己的上下文中。许多解决方案必须能够调整客户端级的安全环境,使之适应于应用程序级。
基于 Web 的企业应用程序的网络基础结构通常基于外围网络(也称 DMZ、网络隔离或屏蔽子网)。按照定义,客户端级位于外围网络的公共端。
应用程序级
应用程序级中的服务器负责驻留应用程序的业务组件,以及 Web 服务器(在 Web 应用程序的情况下)。如果您的应用程序遵守 Three-Layered Services Application,那么该级将驻留业务层。
硬件
应用程序级中的计算机是服务器,其配置必须能够协调应用程序服务器与 Web 服务器的资源要求所引起的冲突。
由 于应用程序级服务器是 Web 服务器,因此该级通常必须包含配置为 Server Farm 的多个服务器,以满足可伸缩性和容错等运行要求。随着在客户端级中添加用户,直至解决方案的性能降低到可接受的参数以下,您必须在场中添加服务器。有关服 务器场的可伸缩性和容错等特性的详细信息,请参阅"Server Farm"。
软件
应用程序级 中的服务器同时安装了 Web 服务器和应用程序服务器软件。应用程序服务器软件为应用程序逻辑提供执行上下文。有关应用程序服务器的总体概念的详细信息,请参 阅"Application Server"。有关该级所要求的软件基础设施的示例,请参阅"使用 Windows Server 2003 实现 Application Server"。
如果您的解决方案是 Web 应用程序,那么必须针对安全性和网络连接对该服务器进行优化。否则,服务器配置应反映您的业务组件和应用程序服务器的资源要求。避免通过硬编码的方法来引 用应用程序中的特定数据库,而应使用配置文件、注册表或名称服务来选择引用适当的数据库。
安全性
该级中的服务器通常位于相同的安全环境内。因此,它们可以使用公共的安全基础结构来彼此进行交互。
如 果使用外围网络,则通常在其中部署组合的应用程序和 Web 服务器。这具有不利的影响,即增加了将敏感的业务逻辑公开于公共 Internet 的机会。如果您的安全要求规定必须将敏感的业务逻辑保留在外围网络的公司端,那么应考虑 Four-Tiered Distribution 模式。
数据级
数据级中的服务器驻留了解决方案所需要的数据库。如果您的应用程序遵守 Three-Layered Services Application 模式,那么该级将驻留于数据层。
硬件
数 据级中的计算机具有一定的规模,并配置为企业服务器。已针对 I/O 吞吐量和硬盘使用情况对这些服务器进行优化。如果可伸缩性和容错等运行要求规定该级中应具有多个服务器,那么这些服务器几乎总是被配置为服务器群集。通常 在这种情况下使用服务器群集是因为,所有服务器都必须对一个共享状态(例如,数据库)进行操作,并且服务器类的计算机对磁盘空间和磁盘 I/O 容量具有非常高的限制。有关服务器群集的可伸缩性和容错等特性的详细信息,请参阅Server Clustering。
软件
数 据级服务器驻留数据库管理系统,如 Microsoft® SQL Server 2000。通常,报告和数据分析软件也部署在这一级。为了从群集服务器环境获得最大的收益,要求对数据库软件进行专门的调整,以便在群集环境中使用。
安全性
由于需要保护公司的数据资产,因此数据级通常具有所有级中最严格的安全要求。通常,只允许应用程序服务器和数据库管理员工作站访问这些服务器。对于具有严格的安全要求的解决方案,可以在网络中专门的子网中部署数据级。
如果使用外围网络,那么数据级几乎总是位于外围网络的公司端。一些安全意识非常强的解决方案甚至在应用程序级和数据级之间部署第二个外围网络。
结果上下文
Three-Tiered Distribution 模式具有许多优缺点。
优点
使用此模式具有下列优点:
- 通过将应用程序级配置为服务器场,并将数据库级配置为服务器群集,可强力支持可伸缩性和容错。
- 通过将客户端计算机与应用程序逻辑分开,可支持瘦客户端应用程序的开发和分布。
- 每一级都可以在其自己的安全环境中运行。
- 由于 Web 服务器和业务组件位于同一台计算机上(甚至经常处于同一进程中),因此性能得到增强。
缺点
使用"三级分布"也具有下列缺点:
- 业务逻辑直接向客户端级公开,对于 Web 应用程序来说,这可能带来重大的安全风险。
- 支持 Web 服务器的硬件比同时支持 Web 服务器和应用程序服务器的硬件要便宜得多。因此,对于此解决方案而言,添加一个新用户所增加的成本通常比 Web 服务器与应用程序服务器分开的解决方案要高。
第4章 部署模式 Three-Tiered Distribution(三级分布)的更多相关文章
- 第4章 部署模式 Deployment Plan(部署规划)
已开发了基于组件的应用程序,该应用程序在逻辑上构造为多层结构,如 Three-Layered Services Application. 中所述.您希望将它分布到一组在物理上为多级结构的服务器上,如 ...
- 使用Micrisoft.net设计方案 第二章组织模式
第二章组织模式 模式不仅依赖于它所包含的更小模式,同时也依赖包含它的更大的模式.它是描述复杂软件的系统方法. 本章的目标是让我们了解以下问题: 1.如何标识模式与模式的关系 2.如何把模式组织成模式集 ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件
文章目录 1.7.部署kube-controller-manager 1.7.0.创建kube-controller-manager请求证书 1.7.1.生成kube-controller-manag ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件
文章目录 1.10.部署kube-proxy 1.10.0.创建kube-proxy证书 1.10.1.生成kube-proxy证书和秘钥 1.10.2.创建kube-proxy的kubeconfig ...
- 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...
- Apache Spark技术实战之8:Standalone部署模式下的临时文件清理
未经本人同意严禁转载,徽沪一郎. 概要 在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件,这些临时目录和文件又是在什么时候被清理,本文将就这些问题做深入细致的解答. 从 ...
- 第 2 章 代理模式【Proxy Pattern】
第 2 章 代理模式[Proxy Pattern] 以下内容出自:24种设计模式介绍与6大设计原则.pdf 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代 ...
- 第 1 章 策略模式【Strategy Pattern】
第 1 章 策略模式[Strategy Pattern] 以下内容出自: 24种设计模式介绍与6大设计原则.pdf 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手 ...
- 第15章 迭代器模式(Iterator Pattern)
原文 第15章 迭代器模式(Iterator Pattern) 迭代器模式(Iterator Pattern) 概述: 在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构 ...
随机推荐
- apicloud 第三方登录授权、微信、扣扣、微博登录授权
授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...
- static关键字的定义与使用
static关键字概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的.也就是说,既然属于类,就可以不靠创建对象来调用了. 1 ...
- 15.5.2 【Task实现细节】骨架方法的结构
尽管骨架方法中的代码非常简单,但它暗示了状态机的职责.代码清单15-11生成的骨架方 法如下所示: [DebuggerStepThrough] [AsyncStateMachine(typeof(De ...
- Django解决跨域俩方案
方案一:一套干掉全部Primary 首先你的pip下载一个第三方库贼厉害的: pip install corsheaders 然后在项目的setting.py里面引入第三方库,如下: INSTALLE ...
- CodeForces 245C-Game with Coins
题意:给你一个n,紧接着n个正数,然后有一种操作:选择一个x满足(x*2+1<=n)一次可以把下标为 x,2*x,2*x+1的三个数同时减一: 问,最少几次操作可以使n个数字变为零(已经是0的 ...
- #MySQL数据库无法远程访问的问题
在 Ubuntu上装了mysql,因为项目的数据库是mysql,将项目放在tomcat里面webapp下面,一直启动不成功.本来一直以为是jdbc驱动问题,后来发现不是. 感谢!!http://blo ...
- php去除h5标签
function html2text($str){ $str = preg_replace("/<style .*?<\\/style>/is", " ...
- 从0到1发布一个Vue Collapse组件
需求背景 最近在项目中遇到了一个类似Collapse的交互需求,因此到github上找了一圈关于Vue Collapse的相关轮子,但是多少都有些问题.有的是实现问题,例如vue2-collapse, ...
- Disruptor使用
Disruptor作者,介绍Disruptor能每秒处理600万订单.这是一个可怕的数字. disruptor之所以那么快,是因为内部采用环形队列和无锁设计.使用cas来进行并发控制.通过获取可用下标 ...
- ExtJs之ExtJs.Model验证
没有搞好,但知道意思和配置,并且好像4和3的没有兼容性语法,所以网上找了新语法才出来了点东东. <!DOCTYPE html> <html> <head> < ...