云际计算
云计算发展十年,形成了以数据中心为核心的不同层次的服务,包括架构层(Infrastructure as a Service, IaaS)、平台层(Platform as a Service, PaaS)和软件层(Software as a Service, SaaS)等,由此而形成的云计算市场保持了快速的增长。云服务所呈现的爆发性、全域性和多样性的特点,在规模化、全球化和个性化方面带来了新需求和新挑战。
云计算的一个趋势是,不同云计算平台之间的协作正变得日益频繁。以阿里云为例,每年的“双十一”等销售旺季通常需要大量计算资源,因此在这段时间,阿里云会减少对外的资源供给,导致不少阿里云服务消费者必须暂时迁移到其他云,以保持业务,在销售旺季过后再迁移回阿里云平台。这种现象类似于银行间的“同行拆借”,即多个云之间以合作的方式共同承销服务。但目前由于云平台的异构性,服务迁移的成本依然很高。
对于云服务消费者来说,多云部署服务可以有效提高服务的可用性(availability),已成为一种主流的服务部署方式。将业务部署在不同的云平台,可以减少单云故障对业务造成的影响[1, 2],同时也能更好地适应不同的服务负载(见图1)。目前,多云部署主要采用手动部署的方式,同时对故障恢复的处理也依赖云服务消费者自身完成,缺乏一种高效且可靠的可用性保障机制。
图1 多云服务能够有效提高故障容忍能力
在云服务消费者提出新的云平台使用方式的同时,云服务提供者也针对云服务消费者的特点,对自身服务不断进行调整。云服务提供者通常会根据云服务消费者对计算资源使用的周期性进行相应的价格调整,在使用率较低的时间段降低资源的价格,反之则提高,从而实现计算与价格的均衡。例如,亚马逊(Amazon)的现货实例(spot instance)服务允许云服务消费者定下愿意接受的最高价格来租用云服务的闲散资源,同时会根据供需情况周期性地发布即时价格,如图2所示。当云服务消费者设置的价格高于其即时价格时,自动将服务部署在现货实例上并运行,且实际支付价格为系统即时价格;当云服务消费者最高限价低于即时价格时,系统自动终止服务,待即时价格低于云服务消费者最高限价时再次启动服务。因此,在全球化协作带来了“follow-the-sun”[4]工作流趋势的同时,对计算资源的使用则日益有“follow-the-moon”[5]的趋势,从而利用云服务提供者的昼夜价差实现低成本、全天候的服务。与此同时,亚马逊也提供了预留、按需与专用等多种计算实例[6],满足不同的需求。因此,跨云计算不但带来了更好的资源利用率、容错能力,也提高了计算资源的性价比。
图2 网站us-east.windows.m1.small在亚马逊现货实例的价格随时间变化曲线[3]
新一代云计算呼唤云际分工协作。以阿里巴巴电子商务全球化为例,支撑此业务的阿里云也需要国际化。这里有两个发展策略:一是自建,但若要满足峰值计算能力,则成本极高;二是合作,面临如何合作的机制挑战。人类工业化的历史经验告诉我们,分工协作是发展方向。早期的工业生产,例如英国的羊毛纺织厂,除了拥有纺织车间等,还需要自建养殖场和自办水陆运输等业务,是“小而全”的、自给自足的作坊式生产,缺乏效率和竞争力。而现代化制造是基于标准化的市场分工与协作。例如国产C919大飞机,由10多个国家、100多个细分行业协同创新、协作生产。现代服务业也给我们同样的启示:航空公司结成航空联盟,实现国际化运营。分工协作也使云服务提供者和云服务消费者双双获益。
基于上述分析,云际计算作为云计算未来发展的新形态和新概念,以云服务实体之间开放协作为基础,通过多方云资源深度融合,方便开发者通过“软件定义”方式定制云服务、创造云价值的新一代云计算模式,力求实现服务无边界、云间有协作、资源易共享和价值可转换的云计算愿景。跨云计算作为云际计算重要的技术组成,以云服务实体为单位,对实体之间的计算迁移提供支撑,从而提升云服务实体之间整体资源利用率。目前,跨云协作问题已经引起国内外关注:在不同数据中心间资源聚合等方面取得突破,在资源虚拟化、分配动态化和服务自动化等提升资源利用率方面取得进展。
云际计算典型应用与挑战
典型应用:跨云计算迁移
渲染是现代电影中的一项重要制片技术,需要大量服务器运算完成。渲染有3个重要特点:其一是计算量巨大:电影渲染可以按帧进行,1秒钟通常包含24帧,其中每1帧需要1~10小时,而一部电影的渲染则需要8000万个小时;其二是高度可并行性:每一帧渲染相互独立,因此可以并行计算;其三是出错可重算:每一帧在计算时若出现错误,可以重新计算,不会对其他帧的渲染造成影响。
当某云平台计算资源不足以支撑某次渲染任务时,需要将渲染任务部分或全部迁移到其他云平台。由于渲染任务彼此之间的独立性,部分迁移的渲染任务不会对已完成或正在进行的任务造成影响。
挑战1:跨云平台的资源管理
云际计算是对现有云计算资源的聚合和重组,跨云资源呈现异构性、分散性、复杂性和多样性的特点。从传统云计算模型来看,包括公有云、私有云和代管云等多种不同形态的云平台;从以虚拟机作为计算单元的角度来看,包含专有虚拟机、按需虚拟机、预留虚拟机和临时虚拟机等。这些不同的计算资源一方面在硬件构成方面具有高度异构化的特点,包含不同的CPU、图形处理器(GPU)和固态硬盘(SSD)等不同计算资源、网络设备和存储设备;另一方面,在稳定性、性能和隔离性等方面均具有不同的特点,因此给云计算资源的统一管理带来了巨大的挑战。
挑战主要包括以下方面:首先,计算资源本身存在异构性。云平台计算资源通常包括处理器资源、内存资源、存储I/O资源、网络I/O资源和GPU资源等。同一类计算资源也存在显著差异,例如不同处理器的工作频率、缓存大小、体系架构和支持特性等均不同。对于同一个工作负载,在工作频率和缓存大小相同但体系架构不同的处理器上,其运行效率也会有显著的区别。其次,计算资源的分散性同样面临挑战。云平台A上的处理器资源很难与云平台B的内存资源相结合,因此,如何在实际的物理限制下,将基础计算资源进一步组成特定的资源集作为提供给云服务消费者的最小单元,是一个具有挑战的问题。第三,如何对计算资源进行动态的最优配置,从不同维度根据实际工作负载的需求对资源池进行分配,充分发挥软件定义云际计算的优势,并通过市场驱动的机制根据资源池的动态价格分配资源,也是亟待解决的问题。
挑战2:缺乏对跨云异构计算资源的抽象与解耦
跨云计算需要新的资源抽象方式。不同的云平台在不同的层次对资源进行抽象,包括IaaS、PaaS和SaaS等,以真机、虚拟机和容器等不同形态将资源提供给最终云服务消费者。目前,已经积累了大量基于虚拟机镜像和容器镜像(如Docker等)的云应用。跨云计算平台同样需要无缝支持这些已有应用,如支持以容器为计算实体抽象的标准。
传统的虚拟化技术和容器技术主要是将单一物理硬件平台进行拆分,保证拆分后的不同部件之间的隔离性;而在跨云计算平台,需要在跨物理节点的维度对计算资源进行重新抽象与管理,导致现有的资源抽象在性能、安全性和隔离性等方面面临新的挑战。如何构建面向计算与存储的资源抽象,结合嵌套虚拟化[5, 6]的特点,实现应用与平台的解耦,减少计算状态对平台的依赖,是一个需要解决的问题。