影响因素

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(三级分布)的更多相关文章

  1. 第4章 部署模式 Deployment Plan(部署规划)

    已开发了基于组件的应用程序,该应用程序在逻辑上构造为多层结构,如 Three-Layered Services Application. 中所述.您希望将它分布到一组在物理上为多级结构的服务器上,如 ...

  2. 使用Micrisoft.net设计方案 第二章组织模式

    第二章组织模式 模式不仅依赖于它所包含的更小模式,同时也依赖包含它的更大的模式.它是描述复杂软件的系统方法. 本章的目标是让我们了解以下问题: 1.如何标识模式与模式的关系 2.如何把模式组织成模式集 ...

  3. 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 ...

  4. 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 ...

  5. 技术分享 | 在GreatDB分布式部署模式中使用Chaos Mesh做混沌测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 需求背景与万里安全数据库软件GreatDB分布式部署模式介绍 1.1 需求背景 混沌测试是检测分布式系统不确定性.建 ...

  6. Apache Spark技术实战之8:Standalone部署模式下的临时文件清理

    未经本人同意严禁转载,徽沪一郎. 概要 在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件,这些临时目录和文件又是在什么时候被清理,本文将就这些问题做深入细致的解答. 从 ...

  7. 第 2 章 代理模式【Proxy Pattern】

    第 2 章 代理模式[Proxy Pattern] 以下内容出自:24种设计模式介绍与6大设计原则.pdf 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代 ...

  8. 第 1 章 策略模式【Strategy Pattern】

    第 1 章 策略模式[Strategy Pattern] 以下内容出自: 24种设计模式介绍与6大设计原则.pdf 刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手 ...

  9. 第15章 迭代器模式(Iterator Pattern)

    原文 第15章 迭代器模式(Iterator Pattern) 迭代器模式(Iterator Pattern)    概述: 在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构 ...

随机推荐

  1. CorelDRAW2019版本下载,CorelDRAW最新版新增功能(全)

    使用CorelDRAW 2019,随时随地进行设计创作.无论您使用的是 Windows 或 Mac,都能在为您的平台量身设计的直观界面中,随心所欲地自由创作.无论您是热衷于像素,执迷于无缝输出或沉浸于 ...

  2. 2019 gplt团体程序设计天梯赛总结

    分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...

  3. HTTP 状态码之:301、302 重定向

    转自:http://www.cnblogs.com/5207/p/5908354.html 概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用 ...

  4. php中的empty()方法

    empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置.empty还会检测变量是否为空.为零.当一个变量值为0,empty() 认为这个变量同等于空,即相当于没有设置.例如 ...

  5. Font Awesome使用方法

    Font Awesome(中文站点)是一套为Bootstrap而创造的图标字体库及CSS框架,在业界享有盛誉. FA包含了常规web开发所需要用到的几乎所有图标,并且免费授权使用,只需要下载即可.所有 ...

  6. 如何用PYTHON的CGIHTTPSERVER模块模拟POST请求?

    这次又要逼真一点点,可以弄POST请求啦. 在WEB根目录下新建cgi-bin目录(据说是规模要求),然后运行命令: python -m CGIHTTPServer CGI-BIN目录下,form.p ...

  7. 奇妙的go语言(基本的语法)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 学习一门新的语言无非就是从主要的语法開始的.通过语法书来学习语言毕竟是很枯燥的,所以我们最好还 ...

  8. [Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50853591 英文原文:Using Plugins and Mixins in You ...

  9. [MSSQL]採用pivot函数实现动态行转列

    环境要求:2005+ 在日常需求中常常会有行转列的事情需求处理.假设不是动态的行,那么我们能够採取case when 罗列处理. 在sql 2005曾经处理动态行或列的时候,通常採用拼接字符串的方法处 ...

  10. 三期_day06_登录和找回password

    登录思路:   前台发送一个请求,然后通过spring的自己主动注參注入username和password,将password加密后与数据库中查找的做比較.返回是否通过. 这里还使用了EasyUI的校 ...