从20世纪90年代互联网兴起开始,我们每个人就开始憧憬着计算资源有代价地进行共享。从HTTP到Web服务,再从网格计算到P2P计算,我们距离云技术始终有一步之遥。直到虚拟化技术的兴起,才正式迎来云计算的爆发。
本文回顾了21世纪初虚拟化技术发展孕育出云计算基础设施及相应开源项目OpenStack。同时围绕云计算各条路线衍生以及后面萌发出来的云原生技术进行思考和总结。最后,展望未来开源云计算软件趋势和应用场景。
王庆,Intel云基础设施软件研发总监, 2015年至今连续8年兼任开源基础设施基金会个人独立董事, Linux 基金会下SODA子基金会联盟委员会主席, 另外还兼 任木兰开源社区技术委员会成员和中国计算机学会开 源发展委员会常务委员。
虚拟化孕育出云计算基础设施
1959年,在国际信息处理大会上,一篇名为《大型高速计算机中的时间共享》的报告首先提出了“虚拟化”的概念,从此虚拟化发展拉开帷幕。随后,IBM推出了分时共享系统,它允许多个用户远程共享同一台高性能计算设备的使用时间,这也被认为最原始的虚拟化技术。
1972年,IBM发布了用于创建灵活大型主机的虚拟机(Virtual Machine,缩写为VM)技术,它可以根据用户动态的应用需求来调整和支配资源,使昂贵的大型机资源得到尽可能的充分利用,虚拟化由此进入了大型机时代IBM System 370系列就通过一种叫虚拟机监控器(Virtual Machine Monitor,缩写为VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机实例,从而使虚拟机开始流行起来。
1998年,VMware的亮相,开启了虚拟化的x86时代,虚拟化发展进入爆发期。2003年,开源虚拟化管理软件Xen面世。2005年11月,Intel发布了新的Xeon MP处理器系统7000系列,x86平台历史上第一个硬件辅助虚拟化技术—VT技术也随之诞生。此后若干年,AMD、Oracle、RedHat、Novell、Citrix、Cisco、HP等先后进军虚拟化市场。
虚拟化技术是云计算发展的基石,正是由于虚拟化技术的成熟和普及,为后面云计算的蓬勃发展创造了条件。2006年3月,Amazon推出弹性计算云EC2,它根据用户使用的资源进行收费,开启了云计算商业化的元年。此后,Google、IBM、Yahoo、Intel、HP等各大公司又蜂拥进入云计算领域。2010年7月,美国国家航空航天局NASA与Rackspace、Intel、AMD、Dell等企业共同宣布OpenStack开放源码计划,由此开启了开源基础设施即服务(IaaS)的时代。
注本文节选自《新程序员·005:开源深度指南&新金融背后的科技力量》,目前已开启预售,欢迎大家扫描上方二维码订阅!
开源基础设施先行者OpenStack
在开源基础设施领域,OpenStack是毋庸置疑的领导者。作为一个IaaS范畴的云平台,OpenStack一方面负责与运行在物理节点上的VMM进行交互,实现对各种硬件资源的管理与控制;另一方面为用户提供满足要求的虚拟机。
在OpenStack内部,主要涵盖6个核心组件,分别是计算(Compute)、对象存储(Object Storage)、认证(Identity)、块存储(Block Storage)、网络(Network)和镜像服务(Image Service)。计算组件根据需求提供虚拟机服务,比如创建虚拟机或对虚拟机做热迁移等;对象存储组件允许存储或检索对象,也可以认为它允许存储或检索文件,它能以低成本的方式通过RESTful API管理大量无结构数据;认证组件为所有OpenStack服务提供身份验证和授权,跟踪用户以及他们的权限,提供一个可用服务以及API的列表;块存储组件,顾名思义,提供块存储服务;网络组件用于提供网络连接服务,允许用户创建自己的虚拟网络并连接各种网络设备接口;镜像服务组件主要提供一个虚拟机镜像的存储、查询和检索服务,通过提供一个虚拟磁盘映像的目录和存储库,为虚拟机提供镜像服务。
OpenStack有一个紧密团结了众多使用者和开发者的OpenStack社区。这个社区共计包含来自195个国家和地区超过10万个社区会员,有近700家企业会员。在这个世界里,社区始终遵循开放源码、开放设计、开放开发和开放社区这四个开放原则。开发人员可以讨论什么样的设计是最优的,运维人员也可以提出使用OpenStack的反馈意见和需求建议。
在OpenStack社区里,开设各种渠道跟社区其他成员进行讨论,例如邮件列表、IRC渠道或项目例会、定期举办的峰会和PTG(Project Teams Gathering),以及各种不定期在各地举办的Meetup等等。经过了十二年多的发展,OpenStack项目相对成立之初已经非常成熟了,现在社区更多是提升系统稳定性,增强现有功能以及迎合如数据处理器(DPU)、算力网络(CFN)等新场景新挑战设计解决方案。
云计算基础设施之网络与存储
基础设施主要围绕三块共享资源展开,即计算、网络与存储。网络与存储作为基础设施的三大重要组成部分之二,在云计算兴起之初,社区里就出现了软件定义网络(SDN)和软件定义存储(SDS)的概念,并涌现了不少业界瞩目的项目。
在网络技术里,SDN技术早已是业界公认的未来方向。但是怎样统合各个厂商甚至学术界的标准,一直以来是个难题。在2013年,一大批传统的IT设备厂商联合几家软件公司,发起了OpenDaylight(ODL)项目。该项目发展至今,已经成为开源SDN方案中最有影响力的项目之一。ODL的每一个版本都是以化学元素周期表中某一元素来命名,充满了学术气息。
不仅如此,在技术上,ODL项目也有其独到之处。首先,此项目是基于Java开发平台的,充分利用了Java平台上成熟的动态模块技术(OSGI),以微服务架构为基础,非常灵活高效地集成了各种插件来提供多家厂商设备的支持,以及各种高级网络服务。在北向API接口的设计上,ODL不仅提供了Restful的API,也提供了函数调用方式的OSGI接口,以应对不同方式的北向集成方案。在南向API接口的设计上,充分考虑了多协议支持和多厂商设备适配的便利。另外,OpenStack中Neutron模块的集成,也一直是ODL项目的技术重点之一。
在存储技术里,SDS存储方案的制定,也是无法绕过的要点。Ceph项目是开源分布式存储方案的最主流选择,在和OpenStack配合部署的场景下更是如此。
Ceph诞生于学术项目,2014年在原作者依此创业的公司被RedHat收购之后,RedHat成为Ceph项目的最主要贡献者和技术领导者。2015年后,Ceph正式开始社区化管理,社区委员会最初吸收了8家成员公司。直至2018年,Ceph成立基金会,吸收了Amihan、Canonical、中国移动、DigitalOcean、Intel、ProphetStor Data Services、OVH、RedHat、SoftIron、SUSE、Western Digital、XSKY和中兴通讯等公司。它接受Linux基金会的管理,并为Ceph社区的合作和成长提供一个中立的机构。Ceph基金会董事会不对Ceph的技术治理负责,也没有任何直接控制权。开发和工程活动通过传统的开源流程进行管理,并由Ceph技术领导团队监督。
Ceph项目提供了全方位的分布式存储接口,涵盖了对象存储、块存储和文件系统全部三种云环境使用场景。在OpenStack的云环境中,由于分布式块存储方案往往集成Ceph的RDB技术,所以在选用对象存储方案时,很多用户更倾向于同样适用Ceph的对象存储服务。
对于云计算客户生产环境的要求,纯社区版的Ceph还在性能上有一定的差距,所有国内外出现了很多基于Ceph社区版的商业定制化产品,从性能优化、稳定性、用户界面等方面都有大幅度的提升。
Docker横空出世,云原生崛起之路
在开源基础设施发展的同时,我们再来看看另一条道路发展变化。2013年,Docker项目横空出世,并在此后的发展过程中对计算机业界产生了深远的影响。当然,在Docker诞生之前,云计算基础设施主要是围绕着虚拟机展开的,很少有人想着将容器这种技术应用在云计算场景。而且,不论在Linux还是Solaris亦或FreeBSD里,各种容器相关的基础技术已经成熟,但只有Docker真正抓住了痛点,进而设计出了直达用户期望的友好使用界面,对于软件开发者更是如此,所以Docker的流行首先是发生在DevOps领域,之后逐渐波及其他领域。
相比于虚拟化技术,以Docker为代表的容器技术在做到应用隔离的同时,也没有带来性能的损失,这是一个很明显的技术优势。所以在注重计算性能的云计算场景,部分用户更倾向于使用容器作为底层基础技术。当然,安全性是容器技术的短板,随后,很多安全隔离增进技术也层出不穷,从不同的角度来弥补可预期的安全隐患。
2014年,Google开源了容器编排项目Kubernetes。Kubernetes把自己定位为容器云环境的管理软件,从整体系统的设计上充分考虑了容器(主要指Docker)技术的特点,这也是它和其主要竞争对手Mesos的不同点之一。
Kubernetes在资源的定义上,以容器为基础元素,又引入了“Pod”的概念,把运行相同应用的多个容器实例看作一个管理和调度单元,即Pod。而一个Pod需要运行在单个Minion之中,Minion可以理解成一个主机(Host)。在集群中有多个Minion,被中央控制节点Master统一管理。而在Pod的基础上,Kubernetes又抽象出Service的概念,是多个Pod一起工作提供服务的抽象。
总而言之,Kubernetes引入非常多的新抽象概念,而其集群管理中所要解决的调度、高可用、在线升级等问题,都是围绕此来进行设计。
2015年,Google发布了Kubernetes1.0,并透露它的应用厂商包括eBay、Samsung、Box等知名公司。人们意识到,容器正在改变企业部署和管理应用的方式,但是业界仍处于云原生和微服务应用的初级阶段。7月,Google与Linux基金会以及行业合作伙伴Docker、IBM、VMWare、Intel、Cisco、Joyent、CoreOS、Mesosphere、Univa、RedHat等一起成立了云原生计算基金会(CNCF),一起推动基于容器的云计算发展。
CNCF目的有两个,一是与开源社区和合作伙伴一起共同把控Kubernetes未来的发展,二是开发新的软件以让整个容器工具集更加健壮。Kubernetes作为了CNCF成长的开始,其未来开源的发展由CNCF控制,以保证它在任何基础设施(公有云、私有云、裸机)上都能良好运行。CNCF的技术委员会将会推动开源以及合作伙伴社区共同开发容器工具集。他们还将评估列入基金会的其他项目,以保证整个工具集齐头并进。
云原生的概念,各大厂商理解有所不同,不同社区对它的定义也会有稍许差异。考虑到CNCF基金会在云原生领域的地位,我们援引它的定义和理解,即云原生用一个开源软件栈解决如下三个问题:一、怎么把应用程序和服务切分成多个微服务;二、怎么把上述每个部分打包成容器;三、最后,怎么动态地编排这些容器以优化整个系统资源。
CNCF基金会维护了一张云原生技术全景图,它囊括了大部分有影响力的云原生相关的开源项目。在全景图里,云原生以容器为核心技术,分为运行时和编排两层,运行时负责容器的计算、存储、网络;编排负责容器集群的调度、服务发现和资源管理。往下是基础设施和配置管理。容器可以运行在各种系统上,包括公 有云、私有云、物理机等,同时还依赖于自动化部署工具、容器镜像工具、安全工具等运维系统才能工作。往上是容器平台上的应用层,类似于手机的应用商店,分为数据库和数据分析、流处理、SCM工具、CI/CD和应用定义几类,每个公司根据业务需求会有不同的应用体系。
全景图还包含这两块内容:平台和观察分析。平台是指基于容器技术提供的平台级服务,比如常见的PaaS服务和Serverless服务。观察分析是容器平台的运维,从日志和监控方面给出容器集群当前的运行情况,方便分析和调试。
简单概括,云原生包含容器和微服务两大内容,涵盖Kubernetes、containerd、CRI-O、Istio、Envoy、Helm、Prometheus和etcd等项目,各大厂都可以自由且开放地围绕云原生项目在社区讨论技术和提交代码。例如Intel基于它的硬件芯片,针对计算、存储和网络资源,在Kubernetes里不仅加入了CRI-RM、NFD和NPD、CSI和CNI这些资源管理和硬件能力发现的功能,而且还加入了如GPU、QAT和FPGA等加速器设备的支持。在服务网格里,Intel也围绕Istio/Envoy不断优化网格性能以及增强机密计算安全性。
作为一个开源社区,CNCF社区也建立了各种如邮件列表和Slack渠道,成立了若干不同技术方向的特别兴趣小组(SIG)以及技术指导小组(TAG),以及举办各种项目技术例会,鼓励社区会员公开地透明地讨论技术问题和决定技术方案。而且,CNCF社区还在北美、欧洲和中国有定期的KubeCon和CloudNativeCon大会,提供面对面的机会给社区成员以宣传先进技术方案、收集反馈信息以及更深入地交流技术。
未来开源云计算软件趋势
随着云基础设施、网络和存储等技术转移到以容器和微服务为代表的云原生技术,云计算的发展将在如下技术上呈现出新的趋势,同时也带来了新的机遇与挑战。
边缘计算:某种意义上,边缘计算可以认为是云计算的扩展和延伸。时至今日,构建分布式边缘计算基础设施工具和架构仍处于初级阶段,在边缘计算技术发展里,仍有问题亟待解决。譬如,针对边缘计算场景中的复杂网络环境、自动化部署困难等问题,中国厂商在CNCF社区发起了KubeEdge、OpenYurt、SuperEdge等开源项目,通过边缘自治、云边流量治理、边缘设备管理等功能来实现云边协同。相信未来随着5G技术和移动互联技术的普及,各大运营商和云服务提供商将会迅速在社会面普及边缘计算平台。
新型虚拟化和容器融合:随着各种场景需求的出现,虚拟化与容器技术不断融合不断推陈出新。譬如,现在微虚机(MicroVM)的应用比率在逐渐增加,微虚机在运行速度和安全隔离能力上做到鱼和熊掌兼得。虚拟化与容器技术的融合,已经成为未来云计算里重要趋势。OCI通过标准定义不同技术采用统一的方式管理容器生命周期,在此标准下,我们已经看到有Kata Containers、 Firecracker、gVisor以及Inclavare Containers等各种容器的运行时形态。
另外,由于Rust的性能优点,很多项目都改用Rust来重写。在容器运行时里,RunK采用Rust语言实现了一个标准的OCI容器运行时,可以直接在宿主机上创建和运行容器。这样,RunK比普通RunC跑得更快,同时占用内存更少。
最后,WebAssembly作为新一代可移植、轻量化、应用虚拟机,在物联网、边缘计算和区块链等场景里会有广泛的应用前景。WASM/WASI将会成为一个跨平台容器实现技术,也必将成为不可忽视的一个发展趋势。
机密计算:众所周知,数据在存储态[1]和传输态[2]时都已经有相应的加密机制对其进行有效保护,保障了数据的机密性和完整性,而数据在使用态[3]时的保护正亟需新的技术填补空白。机密计算正是基于硬件的受信任执行环境中执行计算来保护正在使用的数据,它基于建立硬件的可信执行环境(TEE),如Intel的SGX和TDX、ARM TrustZone、AMD SEV/SEV-ES/SEV-SNP、RISC-V Keystone等技术,为数据在云原生环境中的安全使用提供保障。目前在CNCF社区中就有Inclavare Containers和Confidential Containers等开源机密计算项目,它们已成为云原生安全新趋势。
函数即服务(FaaS):Serverless计算或简称Serverless允许用户在不需要考虑服务器的情况下运行应用和服务。它是一种执行模型,其中云服务提供商负责通过动态分配资源来执行一段代码,并且只对用于运行代码的资源量收费。代码通常在无状态容器中运行,可以由各种事件触发,包括HTTP请求、数据库事件、队列服务、监控警报、文件上传、计划事件等。发送到云端被执行的代码通常是以函数的形式。因此,Serverless有时也被称为FaaS。未来我们认为FaaS会越来越流行,尤其在人工智能、自动驾驶等领域,FaaS无疑更适合这些场景使用。除了代码运行成本和可伸缩能力具备优越性外,FaaS可以让开发人员更关注业务逻辑,而无需关心底层资源,提高了编程效率。
数据处理器(DPU):自2015年起,中央处理器CPU频率趋于稳定,数据中心提升算力的边际成本显著提高。然而,应用的激增使得当代数据中心中的网络流量急剧增长。为了适应这种巨大的流量增长,数据中心网络向高带宽和新型传输体系发展,数据中心算力提升遭遇瓶颈,难以匹配快速增长的网络传输速率,激发了DPU需求。另一方面,DPU的出现也可以降低CPU负荷,让CPU更有效地处理业务数据。DPU必将成为数据中心和云计算基础设施里的一支新生技术趋势。
结语
雄关漫道真如铁,而今迈步从头越。云计算经过了十多年的迅速发展,目前在各行各业都得到了广泛的普及,云计算成为了支撑大数据、物联网、元宇宙和人工智能等各领域的基础平台,也是真正意义上全面落地的热点技术之一。未来,随着新技术、新场景和新需求的涌现,云计算市场上不会只有一种声音,也不会有放之四海而皆准的一种方案。云必定会以多种路线形态、多种解决方案、多种衍生技术等方式支撑这些新业务,充分体现“百花齐放,百家争鸣”的态势。
[1]存储态:数据静止地存在存储设备上的状态;
[2]传输态:数据在网络中或者一台主机不同组件间传输的状态;
[3]使用态:数据在被此时正在运行的应用调用的状态,例如此时数据被装载到内存里进行运算。
—————— 推荐阅读 ——————
《新程序员·005:开源深度指南&新金融背后的科技力量》特别策划了“开源深度指南”和“新金融背后的科技力量”两大专题。邀请到当今开源世界的先锋人物,包括Python之父Guido van Rossum,MySQL之父Michael "Monty" Widenius,Apache之父、OpenSSF开源安全基金会总经理Brian Behlendorf,MongoDB CTO Mark Porter、凝思董事长宫敏、Linux内核守护者吴峰光等,更有国内外开源基金会、知名企业代表,从开源安全合规、企业内部开源、开源技术创新、开源行业落地等多方面,为开源背后的开发者、企业、开源组织及开源社区提供更清晰的开源生态建设与升级版开源发展全景式图鉴。
而在金融专题中,来自中国工商银行、邮政储蓄、中信银行、广发银行、中国人民银行、平安科技、微众银行、蚂蚁集团等十数家传统金融机构和头部金融科技公司的技术专家为我们带来了关于各类新一代颠覆性技术的深入讨论和案例分析。深入解答开发者应该如何更好融入金融产业,以及金融科技的人才培养之道,真正做好金融科技的技术创新和数字化转型。