《面向模式的软件架构,卷3》试读:1.1 资源管理概述

在软件系统中,资源管理指的是资源用户对资源可用性进行控制的过程。资源用户可以是任何获取、访问或释放资源的实体。资源管理涵盖下面几个方面:确保资源在需要时可用;确保资源的生命周期是确定的;确保资源及时得到释放,以免影响使用资源的系统的响应速度。 管理资源很难,要有效地管理资源更难。软件的非功能性需求(如性能、可扩展性、灵活性、稳定性、安全性和服务质量)常常严重依赖于有效的资源管理。这些非功能性需求是影响软件设计和实现方式的作用力(force) 。虽然开发系统时可分别考虑这些作用力,但需要在多个作用力之间找到平衡,这极具挑战性。要在这些作用力之间找到平衡,需要解决多个问题。例如,确保系统性能比确保它灵活且易于维护更重要吗?类似地,系统响应时间的可预测性比可扩展性更重要吗?初次访问服务所需的时间比平均访问时间更重要吗? 如果要同时考虑多个作用力,将面临极大的挑战,因为解决一个问题的同时,通常必须在系统的其他方面做出妥协。例如,灵活性的改善常常以降低系统性能为代价。同样,优化特殊用例(如初次访问服务)常常会增加复杂度,并增加处理普通用例的延迟。要解决彼此冲突的作用力,将面临巨大挑战,这与有效的资源管理关系紧密。要解决上述大部分作用力,都将涉及资源的获取、访问和管理方式。 设计高效管理资源的系统时,需要考虑的主要作用力如下。 性能 性能至关重要的系统必须具备众多特征,其中包括延迟低和吞吐量高。每项操作通常都涉及众多资源,因此避免不必要的资源获取、释放和访问至关重要,因为这些都会带来处理开销和延迟。 可扩展性 复杂的大型系统通常有很多需要多次访问资源的资源用户。在很多情况下,设计系统时都考虑了用例,如确定预期的用户数量。随着时间的推移,常常会增加新的需求,进而需要扩展这些用例。例如,新需求可能要求支持更多的用户和更高的传输容量,同时最大限度地降低它们对系统性能的影响。如果系统能够满足这些需求,就是可扩展的。为实现这个目标,管理资源及其生命周期的方式至关重要。除同步开销外,获取和释放资源占用的CPU周期最多[SMFG01]。除向上扩展外,还必须考虑向下扩展,这点很重要。向下扩展指的是为大型系统设计和开发的软件必须适用于较小的系统,使用较少的资源就能运行。 可预测性 可预测性指的是系统的行为符合预期。在有实时需求的系统中,每项操作的最长响应时间都必须是可预测的。要实现可预测性,系统必须审慎管理其资源。进行优化时,不能为改善性能或可扩展性而牺牲服务的可预测性。 灵活性 系统的一种常见需求是易于配置和定制。这意味着可在编译、初始化或运行阶段修改系统的配置,真正灵活的系统给用户留下了这种自由。因此,在资源管理方面,获取和释放资源的机制以及控制资源生命周期的机制必须灵活,同时满足性能、可靠性和可扩展性方面的需求。 稳定性 软件系统的一项重要需求是,频繁的资源获取和释放不应导致系统不稳定。分配和管理资源的方式应确保资源得到有效利用,并避免因资源不足导致系统不稳的情况发生。如果多项资源需要彼此交互或作为一个整体被某项操作使用,则必须避免因其中一项或多项资源出现故障而导致系统处于不一致的状态。 一致性 所有的资源获取、访问和释放都必须确保软件系统处于一致的状态。具体地说,必须妥善管理资源之间的相互依存关系,确保系统的一致性。 可以看到,上述大部分作用力相互依存,很难在处理其中一个作用力时不影响其他作用力。这使得资源管理很难,也是妥善解决这些问题很重要的原因所在。

>面向模式的软件架构,卷3

面向模式的软件架构,卷3
作者: [德] Michael Kircher [印]Prashant Jain
副标题: 资源管理模式
原作名: Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management
isbn: 7115313431
书名: 面向模式的软件架构,卷3
页数: 180
译者: 袁国忠
定价: 49.00元
出版社: 人民邮电出版社
装帧: 平装
出版年: 2013-6