1.4 资源管理模式

本章开头列出了多个作用力,它们对应典型软件系统的一组非功能性需求。鉴于这些作用力影响资源管理,解决它们对软件系统大有裨益。本书介绍一种资源管理模式语言,可消解这些作用力。在本书中,资源涵盖了本章前面定义的一切。虽然本书介绍的每种模式都自成一体,但这些模式一起构成了一种浑然一体的模式语言,有助于软件开发人员和设计人员应对一些资源管理方面的挑战。下面简要地介绍本书中的模式及其消解的作用力。

  • 性能 Eager Acquisition(提前获取)模式有助于加快首次访问资源的速度,进而提高整个系统的响应速度。Caching(缓存)模式避免了重新获取频繁使用的资源带来的高昂开销,从而改善了性能。Pooling(资源池)模式可改善应用程序的性能,因为它有助于缩短释放和重新获取资源所需的时间。
  • 可扩展性 Leasing(租借)模式和Evictor(回收器)模式有助于释放未用的资源,这降低了资源不足的风险,从而提高了系统的可扩展性和稳定性。Coordinator(协调者)模式解决了系统参与者增多带来的可扩展性问题。Caching和Pooling模式有助于避免开销高昂的资源获取和释放操作,从而提高系统的可扩展性。同样,Lazy Acquisition(推迟获取)和Partial Acquisition(部分获取)模式确保实际需要资源时才获取它们,从而减少了特定时点占用的资源数。Resource Lifecycle Manager(资源生命周期管理器)模式帮助管理资源的生命周期,确保维护的资源数最优,从而支持可扩展性。
  • 可预测性 Eager Acquisition模式避免在运行阶段获取资源带来的高昂开销,确保获取和访问资源的响应时间是固定的,从而提高了系统的可预测性。同样,鉴于资源是从资源池中获取的,Pooling模式有助于改善性能。
  • 灵活性 Lookup(查找)模式消除了资源提供方和资源用户之间的紧密联系,这提高了整个系统的灵活性。Partial Acquisition和Lazy Acquisition模式提供了另一种灵活性,即让你能够灵活使用不同的资源获取策略。
  • 稳定性 Lazy Acquisition和Eager Acquisition模式减少了任何时点消耗的资源,有助于最大程度地减少资源消耗,从而确保系统的稳定性。Pooling模式避免了频繁的低级别的资源获取和释放,有助于提高系统的稳定性。Evictor模式降低了资源耗尽的可能性,从而增强了应用程序的稳定性。Leasing模式减少了未用资源导致的浪费,避免了资源用户访问非法资源,有助于提高系统的可靠性和稳定性。Resource Lifecycle Manager模式可确保仅在资源充足时才给用户分配资源,避免了用户直接从系统获取资源可能导致的资源不足,从而提高了系统的稳定性。
  • 一致性 Coordinator模式有助于确保本地和分布式资源的一致性。

注意,前面对模式进行分组时是基于它们消解的作用力,后面详细介绍这些模式时,将根据资源管理阶段(即资源获取、资源生命周期和资源释放)进行分组,而在案例研究中,将再次根据作用力进行分组。

下图说明了非功能性需求与本书介绍的资源管理模式之间的关系。

enter image description here

目录