自2006年肇始,云计算发展至今已逾10年,在技术和产业领域都取得了巨大进展,成为推动互联网创新的主要信息基础设施。随着互联网计算越来越呈现出网络化、泛在化和智能化趋势,人类社会、信息系统和物理世界正逐渐走向“人-机-物”三元融合,这需要新型计算模式和计算平台的支撑,而云计算无疑将成为其中代表性的新型计算平台。
云计算发展回顾——10年3阶段
回顾云计算的发展历史,2006年可称为云计算发展元年。亚马逊公司利用虚拟化这种经典的系统软件技术开创了“硬件即服务”商业模式,使得计算资源可以像水电一样方便地提供给公众使用,这也标志着公众能够感知到的云计算时代由此开始。之后的云计算发展可以分为3个阶段:
概念探索期(2006~2010年)
云计算的“硬件即服务”商业模式得到业界和大众的广泛认可,各种公有云产品如雨后春笋般出现,然而,人们对云计算本质和技术重点的认识却众说纷“云”。产业巨头、学术界都或多或少地从自身业务的角度来看待云计算,给出了各自的定义和说法,而每个都有各自的特点和不足。纵观云计算的技术重点,大规模计算资源的虚拟化和软件栈的服务化是主要的使能技术。
这期间,硬件资源虚拟化及其管理技术获得繁荣发展,推动人们对云的概念和认识不断深入:KVM于2007年进入Linux内核;LXC于2008年发布第一版;VMware于2009年推出VSphere;HyperV于2008年发布,其驱动于2009年提交到Linux内核;CloudStack于2010年开源;后来成为私有云最重要基础设施的OpenStack于2010年由NASA和Rackspace发起……各种服务模式大量涌现,出现了众多的XaaS概念。
不少重要的云计算技术以开源模式发布,开源逐渐成为云基础设施的重要选择,云计算的概念逐渐走向清晰。
技术落地期(2010~2015年)
出现大量围绕云进行的技术实践和验证,各方不断“攻城略地”,以期在商业市场上占领先机。云计算获得了飞速发展,并在全球范围内形成了千亿美元规模的市场。2011年,NIST发布的云计算白皮书对云计算进行了较为权威的定义,基本终结了众说纷“云”状况。XaaS沉淀为以IaaS、PaaS和SaaS为主的3种服务模式;私有云虽起步较晚,但发展迅速,其热度已超过公有云;混合云成为新的热点。移动互联终端的大量出现引发了云-端融合的新趋势,进而影响云计算的部署模式。
云服务和管理的关键技术与系统走向成熟,OpenStack和CloudStack等开源计算平台得到广泛应用,以OpenFlow为代表的软件定义网络成为云服务及管理的重要成分,对涵盖计算、存储和网络等全硬件栈资源进行软件定义成为共识,以应对大量灵活部署虚拟机的需求。云资源管理全面走向软件定义使得云平台可以对规模化的资源进行高效的管理。
应用繁荣期(2015年~)
伴随着云平台的成熟和各式终端设备的出现,云计算正进入一个新的“繁荣发展”时期。其重要标识就是云计算的重心开始从以提供云设施为主转为支撑云应用为主,如何应对复杂多样的应用需求成为云计算重要的关注点,API经济开始兴起。
大数据开始成为云计算的重要应用,据IDC报告,2015年基于云的大数据处理投入增长速度将是基于企业自建解决方案的3倍,2015年所有大数据应用中使用云平台进行存储或处理的占比将达到约40%。面向端设备的、基于云的应用将越来越多也越来越专业,云-端融合将成为云计算的新常态和新模式,而由软件平台来支撑云-端融合将变得越来越灵活。
应用繁荣期的云计算呈现应用领域化、资源泛在化、系统平台化和服务质量综合提升的趋势。
过去10年,国内云计算同样获得了长足发展,一个显著的特征是各级政府的积极介入和推动。我国各级政府发布了一系列推动云计算及其相关领域和相关行业发展的政策,制定并发起了各种各样的云计划和云项目,例如,国务院2010年就将云计算纳入战略性新兴产业规划,科技部和工业和信息化部等分别启动了云计算科技产业项目,各地方政府也启动了各种云计算项目。
很多企业如阿里、百度和华为等也在云计算领域进行了卓有成效的成功实践并逐步加大投入。这些都大力推动了我国云计算的发展。可以说,我国云计算具有了世界级的应用和市场,并在云计算技术方面开始取得长足进步。
云计算未来趋势——“三化一提升”
未来云计算的发展趋势可以用5个字概括:“三化一提升”,其中“三化”是指应用领域化、资源泛在化和系统平台化,而“一提升”则指服务质量的提升。随着互联网联网设备越来越多,我们正进入一个“人-机-物”融合、万物互联的时代,如何将各种网络资源进行有效管理,如何应对各种各样的应用需求,从而使得应用支撑和资源之间能够更好地沟通,是未来云计算技术需要着重解决的问题。
应用领域化
应用领域化是指面向各个领域、各种应用需求的领域云和行业云等将会不断出现,例如支持电力的云、医疗的云和交通的云等等。随着云计算底层支撑技术的日益成熟,云计算的关注重点将转移到对上层应用的支撑。面向特定领域需求,提供支撑应用开发和运行的API、解决方案及其一体化环境,以支撑更多云应用,是云计算发展面临的新挑战。可以预期,领域云和行业云等专用云平台将具有广阔的空间。
应用领域化的一个重要技术是具备云感知能力的软件服务。早期的信息系统是紧耦合一体化的,应用自我建设、自我包含,业务处理功能难以分割;软件即服务(SaaS)概念的提出催生了SOA体系,用于实现松耦合的分布式应用,应用建设依赖于互联网上的“粗粒度”服务,业务处理功能分散存在于互联网上;而云计算的新发展正在催生SaaS 2.0,各种服务应用充分利用云提供的API,基于云所提供的服务或者微服务进行构建,服务应用运行在云中,同时感知云环境中各种资源的变化,提供优化的服务质量。
资源泛在化
未来“人-机-物”融合的世界,计算资源广泛多样,需要充分发挥各种资源的能力。在移动互联网的驱动下,云和智能终端开始融合(云-端融合),未来甚至涉及物联网节点的融合,新的云-端融合的云计算体系架构正在形成,简单地侧重使用某一端资源已经不再适用,按需(动态可变地)使用客户端和服务器资源,是云计算架构发展的又一新趋势。
一方面,客户端和服务端的软件资源、硬件资源和能源可以在两端实现合理分布和应用,两端的数据和独特资源也可以实现共享;另一方面,未来的云将不仅需要支撑现在移动互联网的智能手机和平板电脑等终端,还需要支撑物联网所承载的各种各样的联网设备,在这样一个泛在化网络环境下,面向各种海量新硬件的云资源管理将会面临很大的挑战。
越来越多的新型硬件进入云平台。在服务器硬件方面,包括RDMA和NVM等新型硬件设备开始投入应用,诸如机器学习和数据挖掘等专用计算架构不断涌现,各种类脑、神经网络、深度学习等专用芯片也开始上市……如何及时、有效地管理和利用新的硬件设备和架构,充分发挥其效能,是云管理平台的一项重要任务。在终端硬件方面,新型的传感器设备种类繁多且数量巨大,从摄像头到GPS定位,从监测血压、测量海拔高度到光陀螺仪等等,如此海量的传感器能否在云平台上实现统一管理,也是新型云平台将面临的挑战。
在资源泛在化的背景下,云还呈现出多尺度和差异化的现象,公有云、私有云和混合云并存;既有少量规模庞大的大型云,更有大量的利用已有资源的微小云;有实体云,还有基于实体云的虚拟云和联盟云。未来跨云计算的需求也将越来越突出,如何跨越多云为应用提供服务,实现多云之间的开放协作和深度合作,也是资源泛在化背景下的一个重要课题。针对多云协作的问题,我国科学家提出了云际计算的概念,希望实现云服务实体之间的开放协作和多方云资源的深度融合,从而方便用户和开发者定制云服务、创造云价值,这是下一代云计算研究的一个代表性尝试。
系统平台化
云计算的另一个重要趋势是系统平台化,云计算支撑系统呈现从云资源管理系统向云操作系统演化的趋势。“云操作系统”的概念现在用得比较多,但均未达到预期的操作系统形态和能力。什么是操作系统?简单而言就是向下管理资源,向上提供服务。
例如单机操作系统,其基本由两大功能构成:管理资源和管理作业。目前云管理系统主要作用是管理云的资源,以支撑各种应用的运行;未来,其还要管理云上各种各样的作业,这一理念和单机操作系统相似,是系统平台化之路共性不断凝练和沉淀的结果。云管理系统的共性理念是什么?
我们的理解是:其应包含云操作系统、单机操作系统、各种各样的应用容器和中间件,以支撑各类云服务。要实现真正意义上的云操作系统,需要向下管理所有云端和终端的资源,向上则对多样化的资源应用需求提供相应的API服务。
云操作系统的发展面临着哪些挑战?在现阶段,需要应对复杂多样的应用需求,将传统应用无缝云化,需要支持基于互联网的多终端一体交互方式,以及云内海量异构资源的有效管理等;更进一步则需要向上更好地支撑应用,探索原生云应用的运行与构造技术,研究开发新型程序设计模型和相关的编程语言,设计云作业的统一调度和管理机制,进行跨云和云际资源的按需整合,实现云服务的自主协同等。
在整个云资源的管理与定制方面,软件定义是一个重要途径,通过软件定义方式可以完成深度定制,以管理各种各样的资源,包括分布式资源的高效融合、巨量资源弹性调配、极端硬件特性和移动硬件特性的虚拟化、集约化的资源便捷共享、可定制化的系统软件栈,以及终端和云端的融合协作等,为从微型虚拟机、小型虚拟机到满足更大需要的巨型虚拟机提供宽谱系的管理支撑。
服务质量的提升
服务质量的提升可以用3个词概括——更高、更快、更强壮。其中,“高”意味着支持高吞吐,这需要聚合大规模资源、提供海量数据的处理能力,以及实现高吞吐并发访问。支持高吞吐是很多云应用的需求,例如阿里巴巴每年“双十一”的巨量交易、12306网站高峰时的巨量访问,以及其它各种各样面向大规模社交圈数据的跨地域分布式存储系统等,都对高吞吐具有很大的需求。
在高吞吐的前提下还要实现“快”响应,也就是在提供高吞吐的同时显著降低请求的响应时间,提升用户体验与服务质量。这方面的需求在现实中也有很多,据Amazon统计,每降低100毫秒延迟可以换来1%销售额的提高;Akamai的研究指出:网页加载延迟1秒将导致平均7%客户流失、减少11%网页访问量和16%客户满意度;增强/虚拟现实(AR/VR)需要在1毫秒内完成场景的构建,等等。
基于云的大量应用形态能否获得成功或提供高的使用质量,实现快响应就是其中的关键。要实现快响应,云架构和软件栈的低延迟设计就尤为重要。
云计算应用的延迟主要包括两个方面:一是网络带来的延迟,二是云中心带来的延迟。按当前统计来看,二者大约各占50%。应对网络带来的延迟涉及到带宽的提升,也需要数据中心合理的分布,以便用户可以尽可能访问就近的数据中心;应对云中心带来的延迟则需要对基于分层的云计算软件栈进行垂直整合,当前云软件栈主要面对高吞吐设计,在低延迟尤其是尾部延迟方面有明显不足,因此技术上还有很大发展空间。
更“强壮”则体现在更好的可靠和可用性保障。云计算的规模和复杂度的快速增长要求更为全面的质量保证:首先,数据中心规模不断增长,规模部署成为事实,高度集成的云计算环境故障越来越多,故障带来的损失也越来越大;其次,虚拟化构成的弹性资源池快速增长且组织复杂,增加了管理的复杂度;最后,越来越多的机构计划采用云计算平台,持续发展的业务种类导致了需求多样性。
在这种情况下,如何实现高可靠和高可用的云计算系统成为一个重大挑战,当前已有各种技术研发和尝试,诸如采用非易失性内存来提升内存计算中数据的可靠性和可用性、使用分布式UPS替代传统集中式UPS以保证电源供给、在系统级支持虚拟机/容器的状态同步和动态迁移,以及在应用层次上的数据并行计算和图并行计算系统和机制等。
北京大学基于网构软件模式的云计算实践
互联网已经逐步演化成一个全球泛在的计算平台,其开放、动态和难控的特性对软件技术提出了一系列重大挑战。
我国学者从软件角度探讨互联网计算,提出了一种互联网软件新范型——网构软件(Internetware),并在国家“973计划”项目支持下,针对互联网应用的自主性、协同性、演化性、情境性、涌现性和可信性等新特性,构造了一个开放、协同的网构软件模型;进而提出了支持按需协同和在线演化的容器系统结构和相关机制,支持系统自治管理,为网构软件提供运行时的支撑;提出了全生命期软件体系结构驱动的网构软件开发和演化方法;建立了一套网构软件技术体系。
近几年,北大软件团队基于网构软件模式在混合云管理、数据互操作平台和基于云的大数据处理方面开展了一些前沿性的研究工作。
在混合云管理系统方面,采用“管理功能API化+管理任务可编程”的“软件定义”思路,研制了混合云管理系统——燕云IaaS,实现了对服务器、存储、网络和软件平台等基础软硬件资源的集成与配置管理,支持公有、私有和混合IaaS云的按需构造与管理。燕云已成功转化为多个IT企业的云管理产品,应用于政务、交通、电信和医疗等多个行业领域,相关技术成果还获得了2015年教育部高校科技进步一等奖。
在数据互操作平台方面,面向互联网环境下数据孤岛阻碍大数据互操作问题,研发了燕云DaaS(Data as a Service)系统,基于体系结构恢复技术来抓取应用系统及其构件的API、实现应用和数据的互操作,同时可基于API形成新的运行管理逻辑。
该系统可以在没有系统源码和文档的情况下,将各种Web系统、移动App和PC应用的数据封装成API,打破信息孤岛,实现系统内部数据的开放共享。研究成果已成功应用于政府、金融、交通和能源等上百个应用系统的数据开放共享项目。
在基于云的大数据处理方面,开发了轻量级数据管理与处理平台Docklet,其面向小型数据中心,支持多用户和多框架共享资源,通过容器技术和软件定义技术等将物理集群虚拟化为虚拟集群,支持用户按需共享资源,支持Spark和MPI等各种计算框架,可运行现有的各种Python、R和Java等语言的数据分析与处理程序。
Docklet提出了云化的“工作空间”概念,用户通过浏览器进入工作空间,在云端完成所有数据分析工作,包括编码、测试、运行和结果可视化等。Docklet已在北京大学计算中心进行了部署,为学校师生在线提供科学计算、数据分析与可视化,以及虚拟实验环境等云服务。