论文部分内容阅读
软件即服务(Software as a Service,SaaS)作为云计算的三种服务模式之一,凭借其按需租赁、成本低、易于扩展等优势改变了人们使用软件的传统模式,已逐渐成为中小企业应用先进技术的重要途径,被认为是推动企业信息化建设的强有力武器,具有广阔的发展前景。多租户是实现SaaS的关键技术,作为最常见的云服务,SaaS应用的两大特征体现在:单实例多租赁和系统能够动态扩展适应多租户需求。SaaS服务提供商基于一对多的软件交付方式,同一应用支持万千租户共享,所有租户的业务数据共同存储在服务提供商的数据库中。然而随着租户数目以及数据量的剧增,原始的单数据节点存储能力成为瓶颈,当租户对存储空间和服务质量提出更高要求时,可以借助灵活的云计算架构推动系统实现弹性扩展。云数据库的出现,为大规模多租户数据放置和数据服务提供了近似无限扩展的机会。但现有的云数据库通常基于数据即服务(Data as a Service, DaaS)的理念,不是专门针对SaaS应用而设计,不能识别出应用层面的多租户特征,无法保障SaaS应用的高效运行并满足多租户的用户体验。使得SaaS多租户数据在往云中多节点转变过程中,面临诸多挑战:(1)基于云架构数据节点的弹性扩展能力,如何实现SaaS多租户数据合理有效的放置。现有云数据放置机制没有体现SaaS特点,通常忽略了作为独立个体的应用层的多租户特征,将导致多租户数据的杂乱放置或者某一个租户数据的无序分散,影响租户数据访问成本并增加数据一致性维护代价,所以,只有在云数据管理中引入SaaS多租户的特征,才能有效实现多租户数据多节点的放置,维护系统动态扩展。(2)缺乏有效的SaaS多租户数据划分机制。合理划分是实现云中可扩展架构、支撑数据多节点放置的关键步骤。传统数据库划分方式,以及现有云数据管理中的数据分区方案,一方面扩展能力较弱,对事务型工作负载的支持非常有限;令一方面无法识别SaaS应用多租户,数据划分后难以有效降低分布式事务代价。随着系统规模的动态增长,同一租户数据可能存储于一个节点内,也有可能跨越云中多个节点,如何将基于共享模式存储的多租户数据进行合理划分,在实现系统动态扩展的同时最大限度地减少分布式事务代价是需要研究的一项重要工作。(3)缺少灵活的SaaS多租户数据副本一致性维护机制。SaaS模式下,各租户对应用的定制需求呈现多样化,若直接采用已有静态单一的一致性维护策略来统一约束所有租户数据,不仅不能满足多租户对一致性的差异需求,还会给系统带来大量负担。因此,只有从多租户角度出发,更合理且细粒度的制定一致性机制,寻找数据副本一致性、可用性及系统性能之间的平衡,才能更好的推动SaaS模式的发展。本文主要以SaaS多租户数据在云中多节点的合理放置问题为目标,对多租户数据的动态放置机制、基于共享模式的数据划分策略、数据副本一致性维护等关键问题进行了深入研究,主要工作和贡献概况如下:(1)提出一种针对SaaS多租户数据副本的动态放置机制,解决了因现有放置策略缺乏多租户特征的支持,导致数据杂乱分散放置,进而引起节点负载不均衡、副本一致性维护成本增加等问题。并通过动态调整机制,维护系统性能并节约系统资源。本文对影响数据放置的多种因素进行深入分析,由此建立节点之间影响放置的权重函数。基于SaaS应用节点和数据存储节点的拓扑关系,以及放置权重函数,构建多租户数据放置模型,并设计多租户数据放置算法,获得最优的租户数据放置节点集合,保证节点的负载均衡,同时降低租户数据访问成本减少一致性更新代价。根据系统发展的不同阶段,本文提出了针对初始数据、租户新数据、新租户数据的不同的放置策略,为多租户数据在多节点的合理放置提供了更有效的保证。针对系统负载的变化,本文研究数据放置动态调整机制,通过对共享存储的多租户数据划分,进行放置位置的调整,维护系统性能并节约系统资源,有效实现在云中多节点的动态放置。实验结果表明,本文的放置策略,能够使多租户数据存储系统具有较好的总体性能。(2)提出一种支持SaaS应用的多租户数据划分模型及算法,解决了由单数据节点往云中多数据节点扩展过程中,现有云数据存储无法意识到SaaS应用租户,导致数据划分产生大量分布式事务的问题。随着云中租户数目的增加以及数据量的增大,单节点的数据存储成为整个系统的瓶颈,需要通过数据划分,实现系统规模的扩展。本文提出一个三层结构的多租户数据划分模型,依次为Tenant层、group层、租户分区层。通过对“相关性”、“相关值”,“相关性矩阵”等概念的定义,按照本文提出的相关性分组算法,将一个租户的数据划分形成多个不同的分组,本文称其为相关性分组group,每个group内包含相关性较高的租户定制的多个table。在此基础上以group为单位,事务访问特征为权重,进行图的抽象,并通过最小割stoer-wagner算法,得到以group为粒度的多个租户分区。在此划分过程中,确保租户分区之间的分布式事务数目最小。最后根据数据放置机制中目标节点的选择,确定划分后需要扩展到新节点上的租户及租户分区数据,在实现基于共享模式存储的多租户数据在多节点动态扩展的同时,最大程度的降低了分布式事务。实验结果表明,与其他几种常用数据划分技术相比,产生的分布式事务数目明显降低,保证了SaaS应用的高效运行。(3)提出一种自适应的SaaS多租户数据副本一致性维护机制,解决了现有云存储方案中静态单一的一致性策略统一约束所有租户数据,给数据库系统造成大量负担并且不能满足多租户对一致性多样化需求的问题。本文从多租户数据本身、SaaS应用、多租户三个方面出发,分析可能影响数据一致性需求水平的因素,并对其进行形式化定义。针对云环境中不同租户以及不同的SaaS应用对数据一致性需求的差异,提出自适应的数据副本一致性维护机制,包括四种不同的一致性级别。系统在运行过程中,根据实时统计的特征变量的变化,及呈现出的不同读写访问情况,基于强一致性、弱一致性、以及二者之间的折中,动态选择调整不同的数据副本一致性维护机制,达到一致性、可用性和系统性能之间的动态平衡。本文针对四种不同的一致性级别,分别设置详细的一致性维护策略,并提出共享存储环境下的多租户数据副本逻辑管理模型Cohort。通过借鉴Paxos算法,结合多租户特点引入元数据描述队列,确定在强一致性、弱一致性、以及二者折中的一致性维护方式中,数据更新以及数据访问操作在Cohort内副本之间的实现方式。并通过实验验证自适应的数据副本一致性维护机制更加适应多租户特征。