前面的两个体系结构维(基础结构服务依赖性和逻辑层)主要定义了体系结构的逻辑层面,即需要哪些组件以何种交互方式将服务交付给最终用户。但是,对于任何已部署的解决方案,还有一维也同等重要,即解决方案满足服务质量要求的能力。
解决方案体系结构的服务质量维着重于 Java ES 服务质量组件所扮演的角色。
随着和电子商务服务对企业运营的作用愈来愈重要,这些服务的性能、可用性、安全性、可伸缩性以及可维护性已成为大规模、高性能部署体系结构的主要服务质量要求。
要设计成功的软件解决方案,必须建立相关的服务质量要求,设计符合这些要求的体系结构。许多重要的服务质量用于指定服务质量要求。下表中简要列出了这些服务质量。
表 2–2 影响解决方案体系结构的服务质量
系统服务质量 |
说明 |
---|---|
按用户负载条件对响应时间和等待时间所作的度量。 |
|
最终用户访问系统资源和服务长期性保证程度(系统正常运行时)。 |
|
对系统及其用户的完整性进行说明的复杂因素组合。安全性包括系统的物理安全、网络安全、应用程序和数据安全(用户的验证与授权)以及安全的信息传输。 |
|
随时间推移为已部署系统增加容量的能力。可伸缩性通常涉及向系统添加资源,但不应要求对部署体系结构进行更改。 |
|
在不增加资源的情况下,系统处理异常峰值负载用量的能力。 |
|
对已部署系统进行维护的容易度,其中包括监视系统、修复出现的故障以及升级硬件和软件组件。 |
服务质量维对解决方案的部署体系结构有很大影响:如何在物理环境中部署应用程序组件和基础结构组件。
影响部署体系结构的各服务质量密切相关:对一项系统质量的要求可能会影响到其他服务质量的设计。例如,提高安全性级别可能会影响到性能,而性能又会影响到可用性。添加额外的计算机以通过冗余来解决可用性问题可能会影响到维护成本(可维护性)。
理解各服务质量的相互联系方式以及所要采取的折衷方案是设计满足业务需求和业务约束的部署体系结构的关键。
有几个 Java ES 组件主要用来增强系统服务组件或分布式应用程序组件提供的服务质量。这些软件组件通常结合一些硬件组件共同使用,如负载平衡器和防火墙。
以下简要说明了在服务质量组件中介绍的 Java ES 服务质量组件:
可用性组件。这些组件为部署的解决方案提供近乎连续的正常运行时间。
访问组件。这些组件提供到系统服务的安全 Internet 访问,还常常提供路由功能。
管理组件。这些组件为系统组件提供增强的可维护性。
下表从体系结构的角度列出了最重要的几个 Java ES 服务质量组件以及受它们影响最大的系统质量。
表 2–3 服务质量组件以及受影响的系统质量
组件 |
受影响的系统质量 |
---|---|
可伸缩性 |
|
High Availability Session Store | |
Sun Cluster | |
Web Proxy Server |
安全性 性能 |
Sun Cluster 软件为 Java ES 组件以及 Java ES 基础结构支持的应用程序提供高可用性和可伸缩性服务。
群集是一组松耦合计算机,该组计算机共同提供了服务、系统资源和数据的单客户机视图。群集在内部使用了冗余计算机、相互连接、数据存储和网络接口,以此来向基于群集的服务和数据提供高可用性。
Sun Cluster 软件持续监视成员节点及其他群集资源的运行状况。如果出现故障,Sun Cluster 软件就会介入,启动所监视资源的故障转移功能,从而使用内部冗余为这些资源提供近乎连续的访问。
下图显示的是支持 Messaging Server 和 Calendar Server 的数据存储服务的双节点群集。
Sun Cluster 数据服务包(有时称为 Sun Cluster 代理)适用于所有 Java ES 系统服务组件。您也可以为定制开发的应用程序组件编写代理。
由于 Sun Cluster 软件担负着控制职责,所以它还提供可伸缩服务。充分利用群集的全局文件系统以及群集中的多个节点都能运行基础结构服务或应用程序服务的能力,可在多个并存的服务实例之间平衡对这些服务增加的需求量。因此,经过适当配置后,Sun Cluster 软件便可在分布式企业应用程序中同时提供高可用性和可伸缩性。
由于冗余对于支持 Sun Cluster 环境的必要性,因此,在解决方案中包含 Sun Cluster 会大大增加物理环境中所需的计算机和网络链路的数目。
与其他 Java ES 组件提供的服务不同的是,Sun Cluster 可用性服务是分布式对等服务。因此,需要将 Sun Cluster 软件安装在群集中的每台计算机上。