面向FaaS的算网异构资源调度技术

2021-09-14 01:39李铭轩李朝霞
信息通信技术 2021年4期
关键词:算力异构底层

李铭轩 常 培 崔 童 李朝霞

1 中国联通研究院 北京 100048

2 中国联合网络通信集团有限公司 北京 100032

3 联通数字科技有限公司 北京 100085

引言

传统云计算技术的研究领域主要集中在虚拟化、存储等资源的集中管理和调度等方面,而对于网络资源的纳管,更多关注领域是研究如何通过建立网络连接,实现计算、存储等资源的互联互通。而随着算网融合技术的发展以及面向底层计算架构的多样化,目前云计算技术的发展更多需要考虑两个方面:一方面,对底层异构计算单元的统一纳管;另一方面,网络资源不单单只提供计算资源的网络连接,更多的能够面向不同的计算场景提供不同的网络类型。文献[1]具体阐述了在算力网络发展过程中,网络如何更好满足计算的需求,同时也提出“将边缘节点、云计算节点以及含广域网在内的各类网络资源深度融合在一起……其能够根据客户需求,在云、网、边之间按需分配和灵活调度计算资源、存储资源以及网络资源”。

另外,云原生技术的兴起,改变了传统对于云计算资源的交付模式,从传统的云主机、云存储等计算单位逐渐发展到面向服务能力的交付,使得使用者不再需要关注底层计算资源的使用情况,而更加关注服务能力以及其之上业务场景和需求的开发[2],而Serverless模式的概念正是满足了这种模式发展的需求。本文从不同的算网资源的角度出发,研究了底层异构算力的统一管理,同时面向上层业务和场景不同,提供面向FaaS的服务能力,以期能够屏蔽底层的异构资源,更好地为业务创新和开发提供便捷的环境[3]。

1 Serverless介绍

Serverless是一种构建和管理基于微服务架构的完整流程,允许在服务部署级别而不是服务器部署级别来管理应用部署。与传统架构的不同之处在于,服务完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注于产品代码开发上,而无须管理和操作云端或本地的服务器或运行时,Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务[4]。

FaaS(Function as a Service,函数即服务)和BaaS(Backend as a Service,后端即服务)目前是Serverless技术发展所涵盖的两个主流方向,其中FaaS意在无须自行管理服务器系统或自己的服务器应用程序,即可直接运行后端代码。FaaS可以取代一些服务处理服务器,不仅仅不需要自行供应服务器,也不需要全时运行应用程序[5]。

1.1 Knative技术架构

Knative是谷歌开源的Serverless架构方案,旨在提供一套简单易用的Serverless方案,把Serverless标准化。目前参与的公司主要有Google、Pivtal、IBM等,自2018年7月24日对外发布以来,迅速得到业务的广泛关注,又由于是谷歌开放的开源架构[6],因此和Kubernetes天然耦合,因此处于快速发展的阶段。根据官方的阐述,其主要架构如图1所示。

图1 Knative技术架构

基于上述架构,Knative基于Kubernetes进行部署,并且能够通过Kubernetes调度到底层的容器资源,同时对外暴露API接口以便于开发者进行开发和部署,而上层用户可以基于Istio的Service Mesh(服务网格)来承载应用的编排。通过这种方式可以进一步屏蔽掉用户和开发者共用同一个Kubernetes平台入口,一方面为开发者提供基于Knative实现应用DevOps开发;另一方面,为用户提供基于Istio的应用服务部署。同时两者都不再需要关心Kubernetes本身的容器资源调度情况和人工手动编写脚本来实现业务层的编排调度的烦恼,而进一步关注于业务代码开发本身。

1.2 Knative核心概念

Knative本身主要由Build、Serving和Eventing三大核心组件构成。Knative正是依靠着这三个核心组件来实现整个Serverless的运作机制的。

1)Build:基于Kubernetes能力之上,提供一套完整的标准化、可移植、可复用的容器镜像构建方式。

2)Serving:主要用来提供服务,其构建于Kubernetes和Istio之上,为Serverless应用提供部署和服务支持。应用服务可以基于Serving进行自动扩缩容,并且基于Istio组件提供路由和网络编程等。

3)Eventing:满足云原生开发中通用需求,以提供可组合的方式绑定事件源和事件消费者。

2 算力网络技术架构

算力网络是从传统的云网融合的角度出发,结合边缘计算、云化网络以及智能控制等优势,在算力网络连接下实现更加广泛的算力资源的纳管和动态调度。在资源纳管方面,算力网络与传统的云网融合不同,更加注重网络连接和控制对于“云、边、端”的异构资源的纳管和多集群协调的影响和融合[7]。算力网络整体技术架构如图2所示。

图2 算力网络技术架构

依据上述技术架构,算力网络的云原生资源统一调度平台对底层实现对于存储、计算和网络控制节点的统一管理,通过网络插件实现对于底层算力承载网的控制,从而实现网络连接和网络质量控制,而通过存储插件实现对于共享存储的调度和管理。另外通过Kubernetes的多集群管理能力,实现对于边缘云的对接,从而可以实现和远端边缘嵌入式终端的资源管理和调度[8]。

基于上述的算力网络技术架构,底层算力网络资源和边缘云终端资源纳管基于云原生资源编排调度技术实现统一纳管。而上层则通过平台能力下沉等方式形成算力网络的服务能力,结合算力网络的第三方算力能力和自有的算力能力形成一个统一的算力网络能力集并通过算力网络统一开放平台对外进行开放。从而为上层的用户和开发者提供应用商店实现一键部署,同时统一提供API接口为实现第三方的开发提供基础。

3 基于FaaS的算网异构算力调度方案

基于上述的算力网络技术架构,传统的云网融合技术只能通过基础设施层提供虚拟化计算、存储和网络的统一纳管,并且对于上层应用场景只能够单纯提供虚机资源、共享存储以及虚拟网络等资源,用户还需要在此基础上进行平台的部署和二次开发。并且在开发过程中同样需要考虑算力和网络资源的整合等问题,从而也提高了整个面向算力网络资源的利用率。而基于FaaS的算网异构资源统一调度环境下,整合了底层算力网络资源的能力,对上通过服务网格的方式实现应用服务的编排调度,同时通过API和服务镜像打包的方式提供算力网络开放能力,这样使用者可以基于算力网络本身的服务能力进行开发,因此使用者可以更多地关注业务代码本身。

3.1 技术架构

基于上述的算网异构资源的统一调度和面向使用者的FaaS服务开放,本文提出了基于云原生的异构算力资源的Serverless模式的技术架构,其技术架构如图3所示。

图3 FaaS异构算力技术架构

依据图3的技术架构,面向FaaS的算网异构资源调度由算力管理层实现对底层网络、存储、边缘计算和中心云进行统一管理和编排调度。在算力管理层包括算力注册、算力发现、算力路由来实现对于底层异构算力的生命周期管理,并且基于开源的云原生资源调度平台Kubernetes来实现对于算力的调度管理,同时基于网络接口和存储接口来实现对于网络和存储的管理。

通过Kubernetes底层资源的调度能力对上层提供面向异构资源的编排调度能力[9],与无服务框架Knative进行融合和对接,从而提供函数服务能力。而在函数服务能力中结合Knative的Build组件来实现代码的镜像打包、部署和版本管理等,底层算力管理层也依托函数服务能力来封装底层资源,从而提供开放的API函数接口。依托Knative的Service组件来实现面向上层的服务编排,整个开发者的代码由函数服务能力层中的代码托管来进行统一管理,而打包生成的镜像则由镜像仓库来进行管理。所有版本更新和新函数事件发布等则是由核心组件Event来进行统一的事件消息发布等。

基于上述的整体技术架构,为上层应用提供了封装好的算力网络异构资源的函数级调度和封装能力,开发者或者用户本身不需要关注底层的资源部署在什么位置或者服务器上,不需要关心需要申请多少硬件或者虚机资源等,而将更多的精力关注在业务逻辑代码的开发和业务创新上面。从而可以大大降低算网异构资源作为新基建在应用过程中的门槛。

3.2 异构资源管理

面向FaaS的算网异构资源调度管理机制是基于云原生的底层异构算力节点统一资源纳管,通过底层异构计算芯片作为算力节点在云原生编排调度平台上进行节点管理和注册,并且通过标签的方式来实现算力节点的管理,同时将容器作为原子级的算力调度单元实现了算力节点的资源获取和应用部署,从而实现了异构资源的统一管理。

基于上述的异构算力资源的整体纳管机制,本文采用多集群管理和异构计算芯片资源抽象的方式来实现分级的异构资源统一管理,其中在多集群管理中基于Kubernetes云原生的Operator多集群管理机制实现对于不同数据中心、边缘集群以及网络连接的融合管理[10]。在跨数据中心的集群选择和算力路由等方面,结合业务需求和算力推荐,通过Operator来选择合适的数据中心位置和算力集群来承载应用运行。

而对于异构算力资源抽象机制,如图4所示,在底层的异构算力芯片的管理方面,通过云原生Kubernetes的CRD资源抽象的方式来进行定义[11],通过底层驱动层将算力节点注册到资源编排调度层中,并且在CRD资源抽象层进行资源定义和抽象。通过Kubernetes的配置脚本yaml在云原生应用中将所需运行的资源进行调用,Kubelet在接收到配置脚本时,则会根据yaml脚本将POD创建在指定的算力节点上执行,从而实现了异构资源的调度。

图4 异构算力资源抽象调度图

3.3 面向FaaS的服务能力开放

基于底层异构算力资源的抽象定义机制能够实现对于算力资源的统一纳管和调度,并且在资源层实现了统一,而基于FaaS的算网异构资源调度机制能够在服务层实现算力网络能力的统一,通过云原生技术来实现底层资源的调度以及面向上层应用的服务能力开放[12]。其平台的整体功能架构如图5所示。

依据图5所示,在资源层主要实现计算、存储和网络的整体管理。在调度层基于云原生基础实现网络、算力和存储的调度,同时结合能力下沉的研发模式,不断积累和丰富相关能力集从而形成算力网络的中台能力。而编排层则主要负责将底层的资源进一步转化为服务能力,基于Service Mesh实现服务路由、服务注册和服务发现等功能。而在应用层则进一步采用Serverless模式,结合开源框架Knative实现镜像打包、业务代码托管和应用商店能力,并且通过函数服务为上层的自服务门户和开发者门户提供API函数接口和调用服务。

图5 异构算网资源能力开放平台

依据上述异构算网资源能力开放平台的整体架构,主要分为以下几个部分。

1)资源层主要对基础设施进行统一纳管,包括异构算力,诸如X86、GPU、ARM、TPU、NPU等各种架构的算力,各种存储类型以及网络的管理和调度能力。

2)调度层主要分为两部分的能力,一方面具备对于底层资源层的计算、存储和网络的基本调度能力以及异构资源的抽象;另一方面能够实现能力下沉,结合服务应用场景的调度能力形成基础能力集。根据不同的应用场景分为计算能力集、机器学习能力集以及网络方面的控制能力集,从而可以更好地衔接基础算力能力和上层服务编排需求。

3)编排层基于目前主流的云原生Kubernetes和服务网格Service Mesh实现服务注册、服务发现、服务路由以及边车管理等功能来实现微服务组件之间的连接和通讯。

4)函数服务是基于云原生的Kubernetes和Service Mesh的服务编排基于开源Serverless框架Knative的API网关来实现服务编排能力的API开放以及业务的代码的托管和镜像打包,并且通过应用商店能力提供可视化的服务能力浏览和一键化部署等能力。

5)自服务门户/开发者门户为用户提供不同的业务服务渠道,自服务门户为用户提供业务部署和业务运营的服务门户,提供应用商店的服务部署等功能;而开发者门户为用户提供业务代码开发和API调用,代码托管等方面的功能。

6)监控层实现整个异构算网资源开放平台常规的平台运行、资源监控以及安全告警等方面的功能。

异构算网资源调度服务平台,从底层逐步统一纳管异构算力网络资源的管理和调度,到逐步转向面向应用的服务化编排调度能力,再到上层的函数服务能力开放,从而将异构的算力网络资源进行了有效的统一和开放。这样开发者或者应用使用者不需要关心底层计算资源的分配或者网络带宽的连接,而将更多的精力关注到面向业务代码的开发和逻辑编排上来,从而可以更好地促进算力网络平台架构下的多场景应用的业务创新,真正可以引入互联网化的“前店后厂”业务创新模式和思维。

4 总结

异构算力网络技术的发展是下一代云网融合2.0技术的发展趋势,而在传统的基础设施建设过程中,云原生技术和网络新技术的引入为算力网络的发展注入了新的活力[13]。而本文所提出的面向FaaS的算网异构资源调度技术,在传统纳管各种新型异构计算资源的基础上,采用云原生架构提出了面向FaaS的Serverless框架,从而可以很好地屏蔽掉纷繁复杂且异构多变的算力网络资源,从而使得用户更多地关注于上层业务逻辑的开发和编排,以更好地促进算力网络技术的发展。

猜你喜欢
算力异构底层
中科曙光:联合发布全国首个“一体化算力交易调度平台”
中国电信董事长柯瑞文:算力成为数字经济的主要生产力
ETC拓展应用场景下的多源异构交易系统
离散异构线性多智能体系统的输出一致性
航天企业提升采购能力的底层逻辑
试论同课异构之“同”与“异”
杭州“算力小镇”
计算万物 算力之下要有坚实的地基
凝聚与铺张——孙绍振教授《以丑、呆为美》两岸同课异构教学观摩后记
回到现实底层与悲悯情怀