当今世界,越来越多的应用系统采用分布式模型。然而,很少有管理人员、设计人员及开发人员能在设计、开发、管理中完全理解分布式应用中的底层组件。
N层模型
一个系统是否能获得成功,最初常常依赖于对工具及管理方法的选择。有些方案提供者并不真正了解专业的、企业级的需求,他们会有意无意地向用户推荐专有系统模式,使得将来对应用系统的修改变得痛苦不堪或根本不可能。在这种情况下你只有两种选择:重新构建你的系统或购买更多的软硬件。也许你会问:"为什么我要修改系统?"很简单,因为我们生活在一个剧烈变化的时代,如果你不能及时调整以适应业务的变化,你将很快被淘汰。然而,只要你拥有一个好的设计及清晰的模式,修改并不总是意味着你需要重新构建自己的系统。
N层结构的前提是一组网络、数据、应用的集合,Client和Server可以动态地建立或断开连接以满足用户的需求。在这种模式下,用户可以在任何时间、任何地点存取数据及应用逻辑,其优点是,无论何时,即使需要对组件或子件进行简单或复杂的修改,都不会对其他组件造成影响。
1. 表示层
在N层结构中,表示层通常是指人机界面,也就是我们常常遇到的字符/图形用户界面(CHUI/GUI)。CHUI/GUI作为人机界面,是应用分析员/程序员设计的窗口界面,指导操作人员使用已定义好的服务或函数。从理论上讲,表示层并不拥有任何商业逻辑,但是考虑到有少量应用逻辑不会出现经常性的变化,因此在实际设计中,我们可以把这部分应用逻辑放在表示层.
2. 商业逻辑
商业逻辑与企业的实际应用密切相关,它包括公司的规则及运作方法。商业逻辑所做的,通常是接收输入、处理和返回结果。这里以一个描述支票账户取款过程的商业逻辑为例。对这类交易,某家银行可能规定如果用户账号中没有足够的资金,其取款操作将不予执行。然而,另外一家银行可能以允许用户有限透支为前提,接受用户的取款请求。如果应用系统设计得足够灵活,就足以应付这样的应用逻辑变化。
3. 数据处理逻辑
将数据处理逻辑与商业逻辑分开的原因之一是大多数DML (如 SQL)的代码相同。二者的分离将有助于数据处理逻辑的重用。当然,你可能已经认识到数据处理逻辑是商业逻辑与数据库系统间的主要部分。
4. 管理
应用变得越来越大、越来越复杂,分布越来越广,使得对应用可用性的需求提高。管理服务就必须提供从开发到分布直至维护的全面支持。
5. 安全性
安全性不仅限于用户的登录检查,还包括网络检查、系统检查、用户账号检查、应用数据检查和数据保密。例如,应用的安全性指通过存取控制表限制某类用户对某些应用的存取,银行的用户不能通过Internet请求外部资金转账,因为他受到安全性控制。
6. 数据存储库
存储库是一种软件机制,它负责存储、管理组件,包括应用服务和商业逻辑。存储库也存放一些关键信息,如对象建模(UML)和数据库定义。如果没有恰当的数据存储库,你便无法发现哪些应用逻辑是可用的,何人何时会修改它们?
存储库可有效地帮助开发人员更快地理解应用,去发现已存在的可用组件而无需重复开发,从而有效地控制开发费用。因此,在应用中的任何修改,都应该同时修改对应的存储库,以使其与之保持同步。
7. 中间件
中间件是分布式应用中的一个关键组件,它为N层组件结构中描述的服务提供界面。目前,中间件技术出现了多种走向,很多中间件因为没有把性能作为头等考虑因素而导致整个应用系统的开发陷入困境。在选择中间件产品时,容易犯的一个错误是选择的产品缺乏成熟度。诸如银行、航空、铁路交通等单位运行的关键任务应用是不允许失败的,因此,选择可信赖厂商的中间件产品是应用系统成功的基本保证。此外,中间件对其他产品的开放程度对于节省开发费用来讲至关重要。你的应用是否能连接到Internet上?是否能实现与其他平台的平滑连接?这些都与中间件密切相联。
N层组件
上面分析了N层组件结构中的各个组件,现在我们来看一下如何把各个组件结合在一起,以满足应用系统的需要。理论上讲,现实世界中有 4种拓扑结构:集中型、数据分布型、数据集中型以及高可用型。你可以选择其一,使得从一种拓扑结构可透明地,或者至少是简单地转变到另一种结构。
1. 集中型
在这种结构中,Client程序连接某台指定的机器并通过其完成交易。数据库放置在同一台机器上,或指定一台专门的机器充当数据库服务器。如果你的公司中只有一两台主服务器,这种结构会给你带来下列好处:集中式的管理、安全和简易性。如果我们把数据库引擎放在同一台机器上,这将是最简单的模式; 如果把数据库引擎放在另一台机器上,则尽管增加了复杂性,但也同时会带来好处:当大量用户连接到第一台机器上时,另一台机器的负担将会减轻。在这两种情况下,整个系统的前台没有任何变化,所有的变化都发生在后台。
2. 数据分布型
数据分布型结构类似前一种结构,只是数据库分布在每台Server上。它具有以下优点:无单点失败且可独立进行管理。我们可以将这种结构用于数据分割,例如逻辑分割和地理分割。
值得注意的是,交易的执行可以由一台机器跨越另一台机器,因此使用全程交易至关重要。例如,如果我们有一个交易需要跨越两台机器, 那么该交易在两台机器上,要么全部提交,要么全部放弃,否则,便会面临数据不一致的威胁。完成全程交易的方法之一是使用中间件(如TUXEDO)提供的源于X/Open组织的XA协议,协调管理全程交易。
3. 数据集中型
这种结构是对集中型的一种增强,由其中的一台机器作为数据存取服务器,而在前台提供更多的应用服务器,共享一个数据库服务器。这种情况下,必须使用数据库软件提供的并行处理功能及硬件厂商提供的硬件集群策略。
4. 高可用型
现在,所有用户都希望在硬件出现错误时,应用的迁移能更加简单,并且在迁移的同时能保证系统继续运行且尽量减少人工干预。类似 TUXEDO这样的中间件可以提供这样的功能,它可以帮助操作系统自动迁移关键组件到正常的机器上。对企业的关键型业务应用来说,在应用系统设计初期选择一个可扩展的策略将有助于企业在需要时把应用系统的结构从一种模式转移到另一种模式,并在系统扩展时节省大量费用(谁不希望如此呢!)。
|