第1章 多云计算概述
1.1 背景与发展趋势
伴随着全球经济一体化和信息化进程向纵深推进,市场竞争环境越来越激烈,现代企业和组织需要更加快速、高效地应对变化和机遇,能够动态、敏捷地构建、重组和优化其业务流程,以提升自身的竞争力,真正做到“随需应变”,从而快速响应外部用户的需求和应用环境的变化。在此背景下, 面向服务的计算(Service-Oriented Computing,SOC)[1]应运而生,其利用“服务”作为软件开发的最基本要素,支持异构环境下分布式应用的快速、低成本和高效的协同集成与聚合,已成为当今时代开放网络环境下构建分布式应用的主流计算模式。面向服务的体系架构(Service-Oriented Architecture,SOA)[2]作为架构模型全面支持SOC 计算模式的理念与实施。其主要涉及将企业组件化以及使用服务来开发应用程序,并将这些服务向外提供,以供其他企业或者应用程序使用,从而促进业务流程与应用的快速构建与动态重组[3-5]。
包括SOC 和SOA 在内的服务计算体系改变了软件开发、部署和交付的方式,成为分布式计算和软件开发技术发展的一个里程碑,并引领了一轮技术发展浪潮。随着相关技术的快速发展与成熟,越来越多的企业正在逐步进化到面向服务的企业(Service-Oriented Enterprise,SOE)这种新型组织模式,以适应瞬息万变的市场需求和竞争环境。云计算(Cloud Computing)[6,7]概念及模式的出现和迅猛发展,极大地加速了该“服务化”的进程,企业的IT 需求可以通过IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)和SaaS(Software as a Service)等类型的云服务方式来满足。以共享IT 基础设施和平台为主要特征的云计算模式,能够帮助组织和企业(尤其是中小企业和创业者)以最小的成本和最便捷的方式开发、部署应用并提供服务。而云计算本身也可以看成是上述“服务化”的进一步深化与延展,其将计算、存储、网络和平台等资源都进行服务化并向外提供。根据美国国家标准与技术研究院的定义[6],云计算是一种利用互联网实现随时随地、按需、便捷地访问共享资源池(如计算设施、存储设备、应用程序等)的计算模式。计算机资源服务化是云计算重要的表现形式。
作为近年来IT 领域最大的热门话题之一,云计算模式在提出后便得到了工业界和学术界的广泛关注,成为了新一代不可或缺的互联网基础设施,云与边缘算力成多云计算与智能优化为新的生产力。谷歌、微软、IBM、甲骨文、惠普、思科、EMC 等诸多业界巨头都相继构建了自身的云计算系统,并发布了相应的云计算解决方案及平台。云计算使得人们可以更为灵活地配置、调度和使用计算、存储等各类资源,从而缓解了传统计算机有限的计算、存储能力与快速增长的数据量以及日益严苛的用户需求之间的不平衡状态。各国学者针对云计算开展了大量研究工作,包括数据中心、虚拟化、海量数据存储与处理、资源调度与管理、安全与隐私保护等各个方面。由于任务繁多、用户需求不一、资源类型各异等原因,云计算环境下资源的优化调度颇具挑战性,相关研究主要集中在负载预测与均衡、性能调优、工作流调度、云数据中心能耗优化等方面。不仅如此,各国政府也纷纷将云计算上升为国家战略,投入了相当大的财力和物力用于云计算的部署。
随着各方面相关技术的快速发展与成熟,并在政府、企业界和学术界等各方的共同努力和推动下,企业应用在加速进行“服务化”和“云化”(将其应用转移到云上)。特别地,近几年来伴随着移动互联网、物联网及大数据应用的飞速发展,在“互联网+”这样一个大的背景和趋势下,各个行业中的企业与组织都纷纷进行“触网”,并越来越多地采用云计算服务来支撑其软件服务应用。然而,在这个过程中诸多问题也随之暴露出来,尤其针对使用更为广泛的公有云服务,目前各企业和组织都仅仅使用单个云平台(Single Cloud)所提供的服务,这带来了一系列的问题和挑战,例如:①云服务的可用性保障问题,谷歌和微软的云平台都出现过云服务中断的严重问题,给客户带来了极大的损失。相关云计算的报告[7]中也指出,可用性保障问题是云计算普及的最大障碍。②供应商锁定(Vendor Lock-in)问题,由于云的差异性,客户一旦选择了某个云提供商并将应用和数据部署到其云上之后,若想转用其他云提供商的服务,往往需要耗费巨大的转换工作量及迁移成本,并且非常困难。锁定问题也使得客户会面临供应商调整价格、意外破产或者关闭服务等诸多风险。③网络延迟约束,如今往云上转移的应用很多都是在线互动式应用,其对网络延迟往往有着很高的要求,特别是其服务的用户可能分布于全球各地,此时单个云的部署方式往往难以满足应用对网络延迟的要求。④差异性问题,各云提供商都使用不同的系统架构和技术,并争相提供一些差异化的、独特的云服务来增加竞争力。并且即使对于通用的云计算服务,各提供商的定价策略(既包括价格标准的不同也包括收费项目的差异)和云服务性能也千差万别。没有哪个云提供商提供了所有类别的云服务并且都是最好的,而是各有优劣。
随着上述问题和挑战日趋严峻,“最好的方法是不要将所有的鸡蛋放在同一个篮子中”逐渐成为共识[8],将应用和数据同时分布部署于多个云上的方式开始引起产业界和学术界的密切关注。RightScale在其2015年云计算使用情况调查报告中指出,82%的企业受访者希望支持多云策略,但当时实际使用者寥寥无几。而到2021 年,根据Flexera 的云计算报告,93%的受访者正在使用多云模式,这意味着他们依赖于多个云服务提供商的应用程序和基础设施。IDC 更是将2021 年称为“多云之年”。目前学术界的研究主要关注于多云数据存储与优化、多云存储安全性、虚拟机迁移与云实例选择、工作流多云调度、多云任务分配与资源调度等方面。多云策略已成为未来的发展趋势,这也是云计算向前发展的一个自然进化。
与此同时,由于云计算已经成为IT 产业发展的战略重点,全球IT 公司纷纷推出了面向市场的公有云平台或者开源云平台,如AWS、Google Cloud Platform、Microsoft Azure、IBM Bluemix、SoftLayer、Rackspace Cloud、OpenShift、Cloud Foundry以及国内的阿里云、百度智能云、腾讯云等。针对IaaS 和PaaS 层面一些比较通用的云计算服务类别,如计算、存储、CDN、数据库、网络、应用引擎、中间件等,综合性云提供商基本上都有提供,但都各具特色,并且定价策略和工作性能也是千差万别。同时,为应对市场竞争,这些云提供商也争相提供一些独特的云计算服务。另外,市场上还有大量的中小型云提供商深耕于上述通用云计算服务中的某几类,或者提供其他一些专门的、独特的云计算服务,以进行差异化的竞争。显然,随着越来越多的云提供商及云计算服务类型涌入市场,目前已然构成了一个非常丰富的多云计算环境。
综上所述,在目前企业应用加速进行“服务化”和“云化”的背景下,一方面是往云上转移的服务应用及需求越来越多、也越来越复杂,另一方面是日益丰富的多云计算环境。而已有的研究和市场应用仍主要聚焦于单云策略,往往无法获得最优的价格及工作性能,甚至难以满足复杂应用的所有需求,同时还面临着如可用性保障、供应商锁定等诸多问题。因此,在多云策略的发展趋势下,面对日趋复杂的软件服务应用与数据,以及日益丰富多样的多云计算环境,多云计算模式与智能优化[9-17]成为当前云计算和服务计算领域面临的新挑战。
1.2 本书内容组织
本书分为三个部分来介绍多云计算与智能优化的关键技术与方法。第一部分是规模庞大的云实例选择优化与价格预测,分别对单云和多云环境下按需实例的选择问题和竞价实例的价格预测与选择问题进行研究并提出了相应的解决方案。第二部分是数据的多云优化存储,提出了基于纠删码的数据冗余策略和蚁群算法、快速非支配排序遗传算法等相结合的优化存储方法,针对动态数据存储问题提出了数据访问频率预测算法和基于强化学习的数据优化存储方法,进一步针对群智场景中空间众包数据的存储问题,提出了结合区间定价策略、密度聚类算法和改进遗传算法的多云优化存储方法。第三部分是复杂工作流的多云优化调度,提出了一种基于免疫机制的粒子群优化算法IMPSO(Immune Mechanism-based Particle Swarm Optimization)来优化成本和完工时间,进而针对计算任务间频繁的数据通信带来的完工时间上升与成本增加等问题,引入图论中的集聚系数,提出了复杂工作流任务的切片算法及相应的多云优化调度方法。
(1)基于广义笛卡儿积的云实例选择方法:针对单云环境下按需实例的云实例选择问题,将其转化为最大化总体计算能力、最小化总体价格的多目标优化问题,并针对该问题设计了一种完全Pareto 集合生成算法,该算法将问题的搜索空间从解空间降低至广义笛卡儿积,提高了问题求解的时间效率,并且可以保证得到的Pareto集合是完整的。然后通过借鉴理想点法设计了最优选择方案筛选算法用于从完全Pareto 集合中挑选最优的云实例选择方案。通过实验验证了所提模型的高效性、正确性和可拓展性。
(2)基于改进遗传算法的云实例选择方法:针对多云环境下按需实例的云实例选择问题,将其定义为最大化总体计算能力、最小化总体价格和通信延迟的多目标优化问题。在遗传算法的编码方式上,采取了二维编码方式,并设计了相邻基因间的约束用于减少问题的搜索空间,在选择操作上结合了轮盘赌策略和精英保留策略,考虑到相邻基因间的约束,在交叉操作上采取了首次适应策略,在变异操作时根据相邻基因确定变异范围。通过实验验证了所提算法的有效性和收敛性。
(3)基于k近邻回归算法的云实例价格预测与选择方法:针对竞价实例的价格预测与选择问题,首先通过重采样和滑动窗口的方法对竞价实例的原始价格数据进行预处理,得到机器学习模型训练所需的数据集。通过使用k 近邻回归算法完成了竞价实例的价格预测工作,用户可根据预测的价格避开高价格时段,选择合适的时间购买竞价实例,避免高出价带来的额外开销,以及低出价带来的实例不可用问题。
(4)基于用户需求的数据多云优化存储:针对用户的低成本高可用性数据优化存储需求问题,采取纠删码的数据冗余策略将数据分存到不同云服务商。给出了该问题中关于数据存储的定义,结合优化目标及约束条件,使用权重法将用户的目标转化为单一目标优化,最后提出了基于蚁群算法的数据存储方案求解方法,为用户提供低成本高可用性的数据存储方案。实验结果表明了所提方法的有效性。
(5)多云环境下低成本高可用性的数据优化存储:定义了多云环境下数据存储问题的多目标优化模型,并提出了一种基于快速非支配排序遗传算法的求解方法,可以得到该优化问题的Pareto最优解集;进一步,提出了一种基于信息熵的最优方案选择方法,为用户从Pareto 最优解集中选择一个合适的数据存储方案。实验结果表明使用该方法所得到的数据存储方案在成本和可用性上具有优越性。
(6)多云环境下动态的数据优化存储:针对用户对数据访问频率动态变化的问题,为了能够使整个数据存储周期所产生的成本最低,设计了一个动态调整数据存储方案的方法,其包括了基于LSTM(Long Short-Term Memory)的数据访问频率预测算法和基于强化学习的数据存储方案优化选择算法。实验证明所提方法在基于预测的数据访问频率下可以求解得到最优的数据存储方案。
(7)多云环境下空间众包数据的优化放置:研究了在多云环境下为广域分布的空间众包数据寻求有效放置方案的问题,以尽可能地降低成本和访问延迟。