论文部分内容阅读
近年来,软件即服务(SaaS: Software as a Service)模式正在成为应用软件市场发展的新趋势。作为当前主流SaaS应用的核心支撑技术,多租户(Multi-tenancy)正受到越来越多的重视。其核心思想在于通过对系统软硬件的复用,有效提高资源的利用率,并降低实施和管理的成本。然而,由于该问题的复杂性,目前仍然没有普遍适用的理论或原则。进一步,在纯多租户(Native Multi-tenancy)场景下,除了传统的安全、隔离、定制等需求外,由于所有Tenant共享一个应用的实例,在保证每个Tenant的服务质量、数据安全等方面与单租户应用相比技术上的难度更大。开发满足SaaS应用需求的纯多租户应用对系统架构和开发人员都提出了更高的要求和挑战。另一方面,鉴于SOA(Service Oriented Architecture)架构拥有的灵活快速适应业务变化的能力,与SaaS要求的满足客户动态/异构需求相吻合,越来越多的SaaS应用已经开始基于SOA架构开发。本课题在深入分析多租户技术的业务需求和特点的基础上,对SOA环境下的纯多租户SaaS应用的设计思路和体系架构进行了有效的探索和研究,提出并实现了一种新的,用于构建应用层的纯多租户应用的设计策略和编程模型。该模型的一个特色是设计了一个用于隔离/屏蔽多租户敏感资源和业务的中间层,并据此将开发人员的角色划分为多租户感知(Multi-tenancy Awareness)的和多租户屏蔽(Multi-tenancy un-Awareness)两种类型。多租户感知的开发人员(通常是系统架构的底层设计人员)通过实现第三方接口,将多租户隔离层和真正应用系统环境/资源映射起来。而多租户屏蔽的开发人员(通常是业务流程/UI开发人员)则无需关心多租户技术的细节实现,只需简单的遵循一定的编程接口,就能使其开发的应用系统自动支持多租户。利用本文给出的编程模型,一方面使绝大多数开发人员能专注于业务逻辑的开发;同时使业务逻辑代码和用于实现多租户技术相关的代码最大程度的隔离,从而有效地提高了软件的重用性和可维护性。