轻量级服务:一个在设备、边端和云环境上构建并调度电信应用程序的框架外文翻译资料

 2022-01-04 21:36:38

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


2018年IEEE第20届高性能计算与通信国际会议;

IEEE第16届智能城市国际会议;

IEEE第4届国际数据科学与系统会议

轻量级服务:一个在设备、边端和云环境上构建并调度电信应用程序的框架

林伟,田晨,马林,胡子昂于硅谷基础设施软件技术实验室华为硅谷研究中心美国加利福尼亚圣克拉拉市

摘要——在云计算中,最近出现了许多具有新的概念的各种不同服务框架,例如Function-as-a-service(FaaS),Serverless(无服务器)和Stateless(无状态)。它们本质上是关于微服务体系结构的某些实例,其中,软件应用程序作为一组“松散耦合的服务”实现[32]。从设计的角度来看,这些服务被认为是实现业务逻辑的最小单元。目前现有的框架主要着眼于云端微服务的部署和管理上,而线程级和功能级的微服务内部管理并没有引起足够的重视。这些在编程模型、可扩展性和性能方面的缺失对于电信应用来说是非常严重的。

本文介绍了电信行业中一种新的寻址设备、边缘和云操作环境——轻量级服务。采用FAAS、无服务器和无状态编程模型将电信逻辑与运行时分离,提高开发效率,降低运行成本。轻量级服务框架还有两个额外的运行时:用于复杂电信功能调度的功能级运行时;用于快速响应负载变化的线程级服务内运行时。提出了一种自主自适应调度和分散式业务管理方案,以增强不同电信部署场景下的性能和业务适应性。实验结果表明,轻量级服务框架对于在设备、边缘和云端构建和调度电信应用程序是有效的。

关键词:无服务器、无状态、FaaS、自主

引言

云服务设计与编程正从微服务模式向功能即服务(FaaS)模式转变[9]。微服务体系结构描述了将软件应用程序设计为一套独立可部署服务的特殊方法。这些服务通常是流程,规模小,消息驱动,并受上下文限制[32]。微服务体系结构可以很好地减少开发工作,提高操作灵活性。为了进一步降低开发开销,FAAS被提出作为一种新的云计算服务开发模型。许多云提供商已经发布了基于FAAS的服务,如AWS lambda step函数[1]和谷歌的云数据流[2]服务。这个新模型提供了一个图形控制台,可以将用户应用程序的组件作为一系列功能进行排列和可视化,这些功能使得在不修改整个应用程序的情况下轻松更改工作流和编辑函数序列。

FaaS也被称为无服务器计算,因为它允许服务器端实现对应用程序开发人员是透明的。在无服务器计算中,用户开发的函数和组件在服务器端的容器或虚拟机等封闭环境中进行解析、编译和执行。部署、负载分配和资源分配都由云服务提供商处理。这个新的计算模型为应用程序开发人员和服务提供商提供了双重好处。特别是,开发人员现在可以专注于复杂的数据处理或分析,而不是在服务提供商的云环境中处理服务操作和管理。对于云提供商,此模型允许他们比以前吸引更多的服务,并更有效地管理他们的云资源。

同时,无状态编程在云计算中的应用也越来越受到业界和学术界的关注。“无状态”背后的主要思想是禁止在计算单元内保存任何唯一的状态或配置,例如硬件设备或软件线程。这要求开发人员删除所有可变或共享变量,并在函数中调用I/O。无状态程序减少了提供高可用性和负载平衡的开发和运行时开销,特别是在构建为独立资源(如内存、磁盘、CPU、GPU、FPGA等)集合的云数据中心中。

分离状态和计算单元的缺点是从外部资源存储或检索数据的延迟。然而,随着RamCloud[16]和Redis[29]以及更快的网络、功能强大的NIC和支持DPDK的PCI-E的发展,远程状态缓存越来越成为系统设计的选择[21]。根据[4],使用无状态函数和ramcloud,防火墙和nat等服务的吞吐量与使用本地状态存储的吞吐量相当。

在云计算中,FAAS和无状态编程模型可以无缝结合,从而轻松开发分布式和高可用性的应用程序。在FAAS中采用无状态模型可以确保在函数级别而不是对象级别充分利用并行性[17][26]。转换将状态关联和同步的开销降到最低。通过支持FAAS的云,如AWS步骤功能、谷歌云数据流和Microsoft Azure,开发人员可以利用在不同位置提供的存储服务,轻松地将无状态功能扩展到数百或数千台计算机。

微服务向无服务器和FAAS的转变也为电信业带来了优势。电信行业通常在各种设备上运行相同的服务,这些设备具有不同的特点,如遗留的操作环境、实时嵌入式操作环境和现代数据中心环境[33]。为相同的服务开发和维护不同的软件是一种巨大的浪费。无服务器和FAAS通过将电信服务逻辑与运行时分离,并在所有部署条件下拥有一个电信服务软件来解决这个问题。然而,所有现有的无服务器和FAAS框架都不能完全满足电信行业的需求。首先,这些框架仅为云操作而开发,不考虑资源限制。与云环境不同,本地电信设备的资源通常非常有限。每个服务都受到资源占用量小的限制。第二,电信行业的延迟和调度要求比现有的无服务器和FAAS框架更严格和复杂。因此,需要一个重量轻、实时性高的框架来承载各种电信业务。

在本文中,我们引入了一个新的框架,采用FAAS、无服务器和无状态来解决电信应用中的所有这些问题。论文的组织结构如下。第二节描述了为电信应用开发新框架的动机。第三节介绍了所提出的轻量级服务框架的设计和编程模型。第四部分阐述了轻量级服务框架的几个关键特性和实现。第五节说明了框架的使用,并给出了有趣的实验结果。本文最后在第六节中作了一些总结性的评论。

动机

电信软件从整体架构转变为面向服务的架构,接受云开发和运营模式。同时,采用面向服务的方法定义了新兴的5G网络标准。尽管电信行业的软件趋势基本上符合微服务架构定义,即构建独立的可部署模块和使用消息相互通信的分离功能,但仍有许多挑战需要解决。

首先,使用现有框架将对延迟敏感的电信应用程序分解为大量的小功能,这将显著提高资源使用率并牺牲性能。以电信3GPP无线接入应用[18]为例,它由无线移动业务、信息交换业务、RRC连接建立业务、传输资源管理(TRM)业务等20多个业务组成。仅在TRM服务中(图1),就有28个主要功能,每个功能包含超过10000行代码。将其他服务中的所有功能相加,3gpp访问应用程序中有400多个主要功能。使用当前FaaS框架将3gpp无线访问应用程序折叠成一组功能级细粒度微服务,每个功能都位于一个容器中,这将导致巨大的资源使用、功能间通信开销和性能损失。在实践中,只有大型的自备电信业务才能作为一种独立的微业务来实现。这些功能应保留在每个微服务中,并单独管理。

图1。电信3GPP无线接入传输资源管理(TRM)服务,包含28个主要功能,每个功能都标记在一个矩形框中。

第二,所有支持微服务架构的现有服务开发框架都只关注服务间管理,而不是服务内部。运行时支持(如名称服务和负载平衡器)是在服务级别开发的。然而,服务内调度需求,以及功能级别和线程级别的并行性,不能用现有的框架明确地表达和利用。例如,3gpp无线RRC连接建立由21个主要功能组成的业务,如图3所示,在性能、并发性、优先级和调度方面具有典型的电信应用要求。特别是,此服务中的几个功能组(链)可以并行执行,但一个组中的功能必须以特殊顺序执行。此外,还需要满足一些严格的约束,如函数组(链)优先级、用户会话和消息到达顺序等。所有这些函数级运行时需求都必须由函数开发人员处理。

此外,开发和运营效率也是电信应用程序作为服务开发和执行时需要考虑的另一个因素。例如,由于在资源受限的设备上缺乏服务内支持或功能级运行时支持,开发人员必须手动优化其代码,以减少每个功能内的CPU使用和内存占用,这会造成很大的开发开销,并导致开发周期长,具有多个代码基以实现差异化。不同的平台。具有讽刺意味的是,这与微型服务的快速发展理念相矛盾。

最后,对于电信行业来说,有一个统一的服务框架是很重要的,它具有自动调整功能,以适应不同的部署环境。电信运营商的硬件环境多种多样,从现代服务器刀片到网络设备,从中央数据中心到远程基站。在云端、边缘和设备的所有硬件平台上应用一个软件和一个框架是不可能的,除非框架具有自动适应、智能调度和自我调优的能力。

轻量级服务框架

这里提出的轻量级服务框架是为解决上一节中提到的挑战而开发的。它遵循FAAS编程范式,允许开发人员只负责开发无状态函数(即,不需要存储状态数据)和编辑函数关系。

A:轻量级服务框架和编程模型

在基于微服务的框架中,使用单层运行时系统来管理所有服务。如果需要将服务部署到大规模分布式计算机上,通常会引入资源管理系统。相反,轻量级服务框架引入了额外的运行时层来支持服务内的功能管理,如图2所示。

图2。轻量级服务框架有3层运行时间:cre、sre、fre。每个cre可以保存一个或多个不同服务类型的sres进程;每个sre可以通过线程支持同一类型的一个或多个fre实例;每个fre可以在单个线程内运行同一服务(ls)类型的一个或多个函数组。

  1. 功能和服务

轻量级服务框架的基本元素是功能(F)。函数表示用户业务逻辑。函数可以通过事件(e)以有向无环图(dag)的形式作为函数组(fg)关联在一起:

FG = lt; F1 , F2 , hellip; Fn | E1 , E2 , hellip; gt;

其中,lt; | gt;定义了一个DAG,该DAG由与某些依赖项(列在 | 的右侧)相关联的元素(列在 | 的左侧)组成。此框架中的服务(ls)包含一组独立功能组(用大括号表示):

LS = { FG1 , FG2 , hellip; FGn }

服务保留用户应用程序逻辑。服务类型i表示为LSi,由一组固定的函数和函数dags定义(图2)。目前在轻量级服务中,服务类型是一对一的,与微服务相匹配。

如何将函数分组到不同的服务中是开发人员基于1)应用程序需求2)在轻量级服务框架中不同层提供的不同编程风格、执行模型和并发方法所做的决定。通常,一组具有特殊调度需求的紧密耦合函数应该被分组到一个服务中,这样它的并发性和调度将由服务内部运行时处理。在每个函数中不需要注意并发性、线程或与运行时相关的指令。

一个IDE是用来帮助用户编辑函数和函数DAG以及事件函数映射(如图3)。通过单击,可以将服务编译并部署到目标计算机上运行的环境中。

图3。组成3GPP RRC连接建立服务。有5个独立的函数组并行运行,但由不同的事件触发;在每个函数组中,有多个依赖函数。

  1. 功能运行环境(FRE)

电信业务中的功能共享特殊的处理顺序和调度优先级规则,因此适合在专用运行时运行。在轻量级服务框架中,我们引入了一个新的运行环境层:函数运行环境(FRE)。类型i的FRE表示为FREi,它处理同一类型的服务。FRE完全由轻量级服务框架管理,无需用户干预。

FRE位于单个线程的顶部,不管理线程。FRE的并发性是通过协同例程实现的。如果函数被长时间的I/O调用阻塞,那么它们可以被函数运行时抢占为协程。因此,多个函数可以同时共享同一线程资源。

函数是松散耦合的---函数到函数的调用是通过事件进行的。事件函数关系可以是一对一、一对多或多对多映射。事件驱动的FRE执行模型提供了以下所有灵活性:1)用户可以在不中断服务的情况下更新每个函数;2)用户还可以在函数组中添加新的分支以进行实时调试;3)函数组执行可以基于优先级,即当高优先级事件到达时,fre可以执行更高级别的完成当前任务后,其他功能组的优先级事件。

  1. 服务运行环境(SRE)

轻量级服务框架中的服务运行环境(SRE)通过多个线程为FRE提供并行运行环境。SRE在一个过程中运行。它由同一类型的多个壁画和一个服务运行时组成。I型SRE表示为SREi。在目前的模型中,SRE类型和FRE类型是一对一匹配的。SRE相当于传统的微服务,但其内容丰富得多。

SRE负责两项重要任务:1)实现自适应模糊调度机制,在相同或不同的CPU上启动线程,或根据负载、策略和CPU可用性从云端请求CPU资源;2)处理特殊的用户会话排序和FRE之间的负载共享。

  1. 集群运行环境(CRE)

集群运行环境(CRE)的主要功能是在集群中调度、部署和管理不同的微服务,例如SRE。现有的开源云运行环境,如Meos,可以应用于CRE。

实施

在C/C 中实现了轻量级服务框架,避免了语言运行时引入的不必要开销。我们在运行时中充分利用了共享内存。轻量级服务框架还适应无状态模型,以实现更好的高可用性和负载平衡。

图4。轻量级服务框架实现

A:FRE的实施

引入FRE的动机之一是对服务内部的内容进行细粒度控制,并与用户功能分离。FRE的主要功能是以高度并发的方式基于优先级调度用户功能。

  1. 报文和优先级处理

每种类型的FRE都可以配置为处理多个消息,如图4所示。根据定义,每条消息都与消息函数(msgfnc)和函数组相关联。在大多数电信应用中,一个用户会话可能包含多种不同类型的消息,并且必须按顺序执行。这种约束也在轻量级服务框架中实现。FRE从SRE消息队列(msg queue)中获取一条新消息,并检查SRE会话哈希引擎以了解此消息的会话约束。会话哈希引擎的详细信息将在下一小节中解释。如果消息符合执行条件,那么FRE将首先运行消息函数(msgfnc)将消息转换为内部事件,并将其放入相应的事件队列。然后,FRE从优先级最高的非空事件队列中选择事件,并调用相应的函数。(FRE可以定期使用计时器事件和高水位标记机制清除低优先级事件队列。)

FRE允许开发人员为消息和功能组定义优先级。FRE通过观察到达事件的优先级来做出调度决策,以最小化时间关键消息的延迟,从而实现多样化的服务质量。

2)FRE

全文共17419字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[2314]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。