论文部分内容阅读
软件即服务(SaaS)是一种打破传统软件销售模式的商业模式,具有Web交付和按需付费使用的特点。在这种模式下,软件供应商从软件租用者处获得持续的收入,作为交换,租用方不必再为软件的维护、版本的升级,硬件的购置等付费。正是由于这种SaaS模式的灵活性,可扩展性和成本效益,使得越来越多的企业采用该软件模式。随着SaaS应用的发展,多租户的概念伴随而至,多租户是SaaS应用的关键属性,即SaaS应用必须能够满足多个或多种租户的软件需求,这样SaaS供应商才能减少他们的软件开发成本,硬件购置成本,培训成本,升级和维护成本,从而以最少的基础设施成本获得最大的利润,同时,通过多租户的可定制特性,客户能够按需付费使用软件并降低租户的应用门槛和风险。虽然让应用程序支持多租户能够为软件供应商和用户都带来好处,但是要让一个应用程序支持多租户并不容易,软件供应商不仅要修改软件的架构以适应多租户,而且还要重新设计软件的数据存储结构以便支持多租户的数据存储,并考虑在多租户情况下,保障租户的安全性和隔离性。因此,本文结合国家973计划“一体化可信网络与普适服务体系基础研究——普适服务的基础理论、模型与关键技术”项目,国家自然科学基金“移动网络用户智能主动服务理论与关键技术研究”和“大粒度网络服务协同中行为适配机制与算法研究”,以及“高效可扩展云服务系统架构”项目,首先从多租户应用平台的架构可扩展性方面进行讨论,提出一种可扩展的、多ESB之间可交互的Web服务平台;在该平台的基础上,本文利用网络编码扩大网络容量的思想,进一步提出并实现多租户合理高效利用网络资源的模型,从而改善多租户应用的性能;最后,本文设计了多租户的数据存储模型,并对该模型进行空间效率和实验分析。论文中的主要工作描述如下:1)随着SOA架构的普及以及Web服务的迅速发展,企业服务总线ESB(Enterprise Service Bus)被越来越多的企业所使用。ESB是一个基于消息的,分布的集成架构的开放标准,是在SOA架构中实现服务间智能化集成与管理的中介。作为一个集成架构,ESB无法满足云计算环境下的架构可扩展性的要求,在本文所涉及的的实际应用中也显示出该架构无法支持大规模的数据交互,因此为了让本文所提供的ESB平台服务能够实现架构上的可扩展,并处理大规模的多租户的消息交互,本文提出了一种基于Web服务通知(WebService Notification)规范和基于消息队列云服务的分布式多ESB交互方法。在该方法中,多ESB之间的消息交换是关键问题,如果不能支持多ESB之间的交互,分布式的交互将不能实现。基于这个问题,本文提出了面向企业的多ESB通信架构,在Web服务通知规范和云队列模型的基础上,本文设计和实现了Web服务通知代理服务和订阅请求队列云服务来支持多ESB之间的实时通信。通过Web服务通知代理,多ESB之间可以进行实时交互;通过订阅请求云队列服务,ESB节点可以通过访问队列中的订阅消息,获得其他ESB节点的订阅请求。这两个服务使得本文的系统可以支持更多的租户,具有更好的可扩展性。2)在此平台基础上,本文进一步提出了一种基于主题驱动的组合服务运行方式,在该方式下,只要按照一定的主题订阅顺序就可以动态的运行服务组合,并且在运行过程中,服务只要通过主题的订阅或取消,就可以动态的加入和退出。在实际应用中,本文的方法显示了较好的业务执行效率。3)作为SaaS服务中的一个关键技术,多租户技术的目标是支持大量的客户,SaaS服务提供商如果希望尽可能的为尽可能多的客户提供服务,那么SaaS服务提供商就必须能够尽可能的接受和处理客户的请求,而随着云计算的发展,SaaS应用提供商不得不面临多租户海量的访问请求,面对大量的请求访问,尤其对于竞争资源的请求处理,例如数据库等,将是限制SaaS系统容量的关键因素。因此,本文利用网络编码扩大网络容量的思想,讨论了对瓶颈资源的请求进行复用处理的方法,提出了一种基于多租户的请求复用方法,以便扩大SaaS系统容量。在本文,主要讨论了请求复用中的两个关键问题:一是怎样请求复用,二是在得到复用请求的响应后,怎样从共享信息中分离出租户自身的信息。关于请求复用,对于不同的竞争资源存在不同复用策略。由于请求复用后,获得的数据信息将是包含多个租户的混合信息,因此本文利用租户ID、请求信息、响应信息进行租户间信息的组织,以便区分不同租户间的数据,并在系统获得经过编码的返回响应后,利用同或运算思想,对数据进行解码,以屏蔽不相关租户数据,将响应返回给请求租户。同时本文也给出了相关的请求复用、编码、解码算法,并通过实验证明显示了较好的改善系统容量的效果。4)本文研究了多租户的数据存储设计。目前,数据存储方式主要有键值对方式和基于元数据的方式。元数据驱动的数据管理方式在SaaS应用的定制管理中有着重要的作用,SaaS系统通过元数据表建立租户与定制的对应关系。在租户的定制过程中,相同的数据对象,可以被不同的租户定制,因此由于多租户的性质,容易导致定制对象大量的重复存储。另外,在目前的元数据存储模式中,依然存在过于依赖元数据的的问题,即进行数据查询时,需要不断的读取元数据信息来获得完整的实体信息,因此元数据表的访问效率也是在优化系统的执行效率时需要考虑的因素之一。基于此,本文讨论了在多租户存储环境下元数据的存储模式。本文将元数据分为基本元数据、扩展元数据以及租户自定义的元数据三类,并定义了基本元数据模板,这样,通过该模板可以提取出常用共享数据,从而将基本模板数据进行物化,以便提高元数据的访问效率以及应用程序的执行效率。同时,根据本文对元数据的定义分析,可以看到除租户自定义的元数据差异外,租户间的定制差异主要来自关于基本模板的定制差异,即不同租户对基本模板中的共享数据的重复定制,这种重复定制是造成数据冗余存储的主要原因。针对这种冗余现象,本文提出了租户差异存储方式,并给出了在该差异存储方式下的数据存储和访问方法以及算法描述。本文同时对差异存储方式进行了空间效率分析,给出了冗余减少的概率分析,以及实验分析。