面向无服务器计算的边缘算力网络服务体系研究
2022-05-31易昕昕
张 岩 何 涛 易昕昕 曹 畅 康 凯
1 中国联通研究院 北京 100048
2 中国联合网络通信集团有限公司 北京 100033
引言
我国数字经济蓬勃发展,对构建现代化经济体系、实现高质量发展的支撑作用不断凸显。随着各行业数字化转型升级进度加快,特别是5G、人工智能、物联网等新技术的快速普及应用,全社会数据总量爆发式增长,数据存储、计算、传输和应用的需求大幅提升,在这个过程中,云和网共同组成了新型数字基础设施。算力网络[1]作为算网融合的关键技术,近年来发展迅速,算力网络以数据网络为基础,结合云计算等技术推动了云网融合的演进和发展。对于运营商而言,算力网络可以帮助其转变服务模式,从带宽、网络的提供者转变为网络计算能力的提供者,通过精细化运营网络中各业务的情况寻求发展新方向[2]。通过算力网络的构建,可以将服务模式从单一的资源提供转变为服务提供,通过算网资源的整合和全局调度,为用户提供成本最优的一体化算网服务,提升算网资源整体利用率。
服务化的算力网络以提供具体计算服务的方式向用户开放,可以根据用户的差异化需求提供不同的服务模式,包括面向用户直接提供应用API接口,用户应用时可直接调用,无须关注算力资源分布;由用户或第三方提供功能函数代码包,由平台完成函数打包、分发部署、动态调度,面向用户提供计算服务能力。算力网络目的是将算力服务和网络有机结合,实现基础算力以及算力服务的轻量化部署,完成面向服务能力的交付,使得使用者不再需要关注底层计算资源的使用情况,而更加关注服务能力以及其之上业务场景和需求的开发[3],传统虚拟化服务模式不能很好匹配这个目的,而无服务器计算(Serverless)模式正是满足了这种发展的需求[4]。本文基于云原生中轻量化的无服务器计算模式,以功能函数为算力服务能力,提出了面向无服务器计算的算力网络服务体系,阐述了功能需求、整体架构、部署方案等相关内容,并完成了算力网络服务平台原型研发部署和业务验证。
1 无服务器计算
1.1 无服务器计算简述
无服务器计算(Serverless Computing)是随着当前云计算的进步而发展起来的一种前沿服务模式[5]。云功能允许自定义代码在响应事件时被执行。在大多数情况下,开发者只需要担心他们的实际代码,因为事件队列、底层基础设施、动态扩展和调度都是由云供应商处理的[6-7]。据云原生计算基金会(Cloud Native Computing Foundation,CNCF)定义,无服务器计算是指在构造和运行应用程序时无需管理服务器的一种计算范式[8]。它描述了细粒度部署模型,由一个或多个函数组成的应用可上传到平台执行,并基于实际运行时的资源扩缩容消耗进行计费[9]。
无服务器计算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。Serverless称为无服务器计算,但不代表它真的不需要服务器,而是说开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的技术,允许开发者在服务部署级别而不是服务器部署级别来管理应用部署,甚至可以管理某个具体功能或端口的部署,以便让开发者快速迭代,更快速地开发软件。
Serverless处于起步阶段,代表的是一种服务理念或模式。这种服务理念希望用户无需关注除了业务逻辑本身之外的主机管理、服务运维、配置等事务,不需要关注运营维护问题。也就是说,只要有了Serverless,几乎可以不需要再考虑Devops工作流。Serverless是一种软件系统架构,并不代表某种技术,通常被称为是一种云服务产品形态,比如各大厂商推出的各种Serverless 服务或能力、封装的 API 网关等产品。当前业界最常见的 Serverless 实现方案为 FaaS(函数即服务)+ BaaS(后端即服务)[10]。
1.2 无服务器计算与其他虚拟化模式对比
1.2.1 与微服务架构对比
无服务器架构和微服务架构有许多相似之处,比如业务拆分、强调无状态、具有敏捷特性等[11]。无服务器架构与微服务架构相比,具有粒度更细、要求更严格的特征,比如微服务以服务为边界拆分业务,无服务器架构以函数为边界拆分业务。微服务可以跨调用的内存状态共享,无服务器架构要求调用彻底无状态。此外,无服务器架构依赖BaaS提供第三方依赖,而微服务可以自由选择第三方依赖来源。
微服务的思想就是将复杂单体式应用程序解耦成多个各个独立的服务,微服务设计目的就是用微服务的方式来简化构建复杂应用的过程。但是微服务和无服务器架构是契合的,都强调系统的解耦。从某种角度而言,无服务器架构和微服务是不同层面但又互相促进的:微服务架构是开发模式,无服务器架构是计算平台。
1.2.2 与容器对比
无服务器架构是一种理想的、可预测的、具有小型资源需求和短期事务的工作负载。而容器对于长时运行的流程和可预测的工作负载具有优势。容器在应用程序设计方面也提供了更多的灵活性,但需要对底层基础架构进行更多的管理。无服务器架构和容器不在一个平面上。无服务器架构是一种软件设计架构,容器是软件架构的承载者。从应用程序角度来说,无服务器架构更适用于网络新应用程序,很难将现有的应用程序重构或重写为无服务器架构形式,而容器可以将现有应用程序迁移。无服务器架构与容器的关系是互相补充而非重叠。
综上,Serverless理念符合算力网络中以轻量化的算力服务部署对外提供服务的目的,实现算力服务的轻量化封装,可以部署在资源不足的计算节点、资源受限的边缘节点、端节点内部来实现算力的快速响应与资源的高效利用。
2 基于无服务器计算的边缘算力网络服务体系
2.1 功能需求
在算力网络服务体系中,Serverless实现了细粒度的计算资源分配,不需要预分配资源。具备真正意义上的高度扩容和弹性,按需使用,当执行完毕后立即释放资源,按需计费,适合构建无状态的应用,比如处理一张图片,对一段音频/视频进行编码或解码,对请求返回一小段计算结果数据等。算力网络服务体系架构需要满足以上需求,在Serverless架构下实现以下功能。
1)基于Serverless的服务管理功能:基于服务的维度,统一纳管服务部署、服务发现、服务调度、服务协同,故障监控等。
2)边缘网络控制功能:基于网络的维度,利用网络控制器,实现网络感知、智能路由转发、时延确定性管理、路径确定性管理,保障服务任务的高效分发传输。
3)边缘算力资源功能:基于资源的维度,统一协同管理分布式的边缘计算节点资源,实现算力资源的感知、分配、弹性横向扩展。
4)边缘网络协同功能,包括相邻节点的界定与协同启动指标判断,相邻节点信息维护机制,目标协同节点选择机制与边边协同执行机制等。
边缘计算节点随着用户不断接入,会持续消耗计算资源,因此,服务管理体系需要保证计算资源的可扩充性,即伸缩性。低时延是对边缘侧用户的一大保证,计算平台系统需要保证尽可能减少不必要的时延。计算资源受限是边缘计算的主要制约因素,计算平台应在保证基本功能的条件下,尽量减少计算资源的浪费。
2.2 边缘算力网络服务体系架构
无服务器边缘算力网络服务体系参考架构主要四个部分:基础设施层、算网控制层、基于Serverless的服务编排层以及面向用户的业务应用层。如图1所示,无服务器边缘计算网络的参考架构包括的基础功能如下。
1)业务应用层:该部分主要是部署在无服务器边缘算力网络中的新型业务与应用,这些业务与应用可以通过相应的函数API接入并调用平台提供的函数服务;同时,可根据应用自身的情况,对服务编排层提出需求,通过服务编排层控制底层网络和资源编排,具备分布式弹性可扩展的能力。
2)基于Serverless的服务编排层:实现了对Serverless服务的管控,并向上支撑服务调用,向下连通算力和网络管控。基于Serverless的服务管理子系统,具备Serverless任务分解、Serverless服务部署、Serverless服务发现、Serverless服务调度(负载均衡)等能力。
3)算网管控层:包括两部分,算力管控(云平台)和网络管控(SDN控制器),网络管控负责连接各个边缘计算节点,实现对边缘算力资源和网络集中统一的管理和控制,并保证时延确定性和路径最优化,构建敏捷、高效、可定制的边缘网络及协同机制。算力管控主要对分布式的计算和存储进行集中统一的管理,包括对资源负载状况实时监控为函数的计算处理提供弹性资源,具备灵活扩缩能力;对接异构基础设施资源,屏蔽异构对应用部署的影响实现多级泛在算力的抽象和管理;同时对接分布式基础设施资源,实现层级管控。
4)基础设施层:分布式基础设施资源主要由边缘计算节点和网络设备组成,通过北向接口受算网控制层控制,为无服务器边缘计算网络参考架构提供计算、存储和网络设施资源。
2.3 系统实现
基于前述边缘算力网络服务体系,本文设计并研发了算力网络服务平台原型系统,以补充当前算力网络服务体系中未实现的服务编排、服务调用、算力管控、网络协同等功能,算力网络服务体系中网络控制由第三方SDN控制器实现,基础设施采用自有服务器搭建。算力网络服务平台原型基于模块化、分布式的软件架构,包括资源管理模块、算力调度模块、策略管理模块等基本模块,并且在容器平台的基础上实现Serverless服务能力。算力网络服务平台原型系统功能模块如图2所示。
算力网络服务平台实现了整个服务体系的基本功能,依靠开源的Knative项目[12]实现了Serverless函数计算能力,Knative基于Kubernetes扩展的形式,能够实现服务构建和部署的自动化、服务编排的弹性化以及事件驱动基础设施的标准化。Knative为开发人员提供API用于部署Serverless风格的应用,可以通过Kubernetes的API和工具来部署和管理Knative,工作流程均基于Kubernetes完成。
算力网络服务平台北向对用户进行能力开放,接受应用需求,进行应用的创建、管理和编排;南向对接第三方边缘云平台和网络控制器,实现对底层资源的调用和资源的生命周期管理,平台根据获取的云算力资源和网络资源信息进行算网协编排,将编排后的策略分别下发至云平台和网络控制器,实现端到端的业务打通。具体的,网络控制器从设备收集三层拓扑信息,向算力网络服务平台上报网络资源信息,包括节点、端口、三层拓扑等信息;各云平台(包括虚拟机平台Openstack[13]和容器平台Kubernetes[14])向算力网络服务平台上报资源池可提供的算力资源信息和服务信息,包括云池算力资源、类型等;算力网络服务平台根据应用需求形成算力服务方案,并通过算网协同编排功能形成算+网配置方案;算力网络服务平台调用云平台完成所需服务在各云池的配置;算力网络服务平台根据服务所在算力云池的网络侧信息向网络控制器下发路径路由信息、分流策略等;当算力服务的状态发生变化时,上报告知算网服务平台,由平台给出算力调度方案,并通知网络编排变更网络。为了验证实际效果,本文于实验室内搭建了完整的边缘算力网络服务体系,使用开源的Openvino[15]视频处理软件,进行了人脸识别业务的创建和应用验证,达到了预期效果,系统部署如图3所示。
3 结语
本文分析了无服务器计算技术在算力网络中的发展情况,针对边缘算力网络服务体系的业务特点和需求,基于开源的标准化Serverless服务框架Knative研发了算力网络服务平台原型系统,实现了轻量化的算力部署和服务提供,并且通过该平台实现网络控制与算力控制的协同,验证了算力网络对于多级算力协同服务时的良好特性。该平台目前在实验室进行了多项技术实践,有效支撑了算力网络新技术的研究,是中国联通在算力网络创新体系方面的成功尝试,后续将全力推进相关技术不断成熟、示范应用落地,引领未来网络技术演进。