论文部分内容阅读
SaaS(软件即服务)以其“单实例多租赁”的特点为越来越多的用户所接受,在这种服务模式下,一个应用实例可以为多个租户提供服务,减少了服务提供商为每个租户维护独立应用实例的服务成本,并且应用具有十分灵活的扩展性。但是,相对一般单租户的应用,多租户应用中每个租户可以定制个性化需求,其业务特性变得复杂,这就使得不同的租户对于数据库服务性能有着不同的要求,包括服务吞吐量、平均响应时间等。为确保SaaS应用的数据库服务质量,每个租户会与SaaS数据库服务提供商之间协商签订服务水平协议(Service-Level Agreement, SLA)。参照双方的SLA协议约束,SaaS数据库服务提供商提供的服务想要获得收益,必须能使租户数据库作业的响应时间等性能满足协议标准,否则受到相应的违约处罚。因此,SaaS数据库服务提供商需要进行资源的均衡配置和租户作业执行顺序的制定,以满足租户个性化性能需求,另外,在应用实例的运行过程中服务提供商需要进行集群资源监测以及性能优化,保证尽可能为完成租户作业的提供充足的资源环境。云计算环境下SaaS服务质量的控制需要综合考虑多方面的因素。首先,多租户应用通常具有多热点、多混合的负载特征。多热点主要体现在不同租户的业务热点和峰值不同,热点表示租户的业务高峰期和持续时间,峰值表示租户作业最大的负载压力,不同租户的热点和峰值也是相互独立的;多混合体现在不同租户具有不同的负载特征,并且混合在一起会产生更加复杂的负载压力。这二者使得SaaS数据库服务提供商预测租户负载压力和构建作业调度模型变的复杂。其次,租户因为业务特性的不同对于10、MEM和CPU资源的需求程度不一样,有些租户业务偏重计算会消耗较多的CPU资源,有些租户的业务需要进行表的大量关联并缓存大量数据,还有一些租户业务频繁读写硬盘,并且,多租户应用中多个租户的总体负载并不是单纯的每个租户负载压力的叠加,这也加重了对租户负载压力的预测和对节点资源性能承受能力的判断的困难程度。然后,租户的数据在数据库系统中共享存储资源,各个租户在相同数据节点上执行作业时候就会产生资源竞争,一般情况下租户的复杂的数据库作业响应时间长,简单的数据库作业响应时间短,不合理的执行顺序会使得某些租户的长作业长时间占用数据节点的资源引起其他租户短作业违反SLA约束。因此,如何利用租户数据组织的特点,合理均衡租户的负载压力,为每个数据节点中租户的作业制定有效的执行顺序,是众多数据库服务提供商实现总体SLA利益最大化的目的的有效途径。本文对多租户应用的分布式数据库系统里的作业处理进行了系统研究,提出了一个基于无中心数据架构的两阶段作业调度框架AdaptiveSLA,在分布式数据库既有数据放置的情况下,对各数据节点接收的应用服务器发送过来的租户作业进行两阶段调度,实现数据服务提供商SLA整体利益最大化,并尽可能减少执行作业过程中移动数据的代价。首先,在系统初始化阶段,本文使用机器学习算法构建数据节点上的租户性能需求预测模型。然后,调度的第一阶段是数据节点在接收应用服务器发送的数据库作业的过程中,周期性使用危机探测器进行节点的危机探测,如果危机探测器探测到节点发生了性能危机,数据节点使用滑动窗口协议为后续到达的租户作业找到最合适的调度目标以缓解节点的性能危机;最后,调度的第二阶段是在数据节点在执行租户的数据库作业的时候,综合考虑作业SLA约束的响应时间和执行时间为作业制定执行次序,使尽可能多的作业能在规定的时间完成,增加服务提供商的收益减少违约赔偿,以此达到数据服务提供商整体SLA利益最大化的目的。并且,为验证论文方法的有效性和可行性,本文设计了多组实验评估了使用的方法和模型,证明论文方法有效的达到了数据服务提供商SLA整体收益提升的目标。