基于轻量化、低时延和高并发等特点,Server- less带来了开发方式与科研应用的创新,在软件工程、大数据处理、科学计算、机器学习和物联网IoT等领域得到了许多实践与研究,本文将展开叙述。
1 应用案例
1.1 Serverless与新型系统开发
经典“Serverful”模式主要有客户端-服务器 C- S(Client-Service)和浏览器-服务器 B-S(Brous- er-Service)2类。人机交互由 C、B端负责,应用业务由S端的单体应用提供。
传统单体应用往往耦合度高、迭代与维护难度大、专业性要求高,当前面临创新的需要:①受限于
移动设备的算力与能耗,移动即时应用面临轻量化和低能耗要求;②为了应对数据的汇总、监控和分发等需求,管理信息系统有着实时性能敏感、系统组成复杂等特性。随着产业转型与新增需求的推动,众多旧应用将面临改造或重构,成本低廉的Serverless服务被各类社会部门所采纳。
此外,随着互联网应用与大数据的规模不断扩大,人们面临更严峻的数据孤岛现象,尤其体现在传统文化、创新设计和现代科教等众多细分领域。为了打通数据孤岛,充分挖掘这些细分领域大数据的价值,人们有着强烈的在细分领域建设大数据平台的需求。以往构建大数据平台耗时长、成本高昂且专业要求高,而Serverless的出现为各类细分领域大数据平台的建设带来了机遇,使得从业者能更快速、更经济、更容易地构建大数据平台。
1.2 Serverless与大数据处理
大数据最显著的特征是持续扩大的数据规模及其复杂度,这对传统数据处理系统提出了挑战。为了解决吞吐率及算力瓶颈,除了纵向增加单台计算机的算力,研究人员还尝试以横向拓展的方式,组织分布式计算集群来处理数据。MapReduce是该类模型中最经典的模型之一,其核心思想是先切割数据集,再执行多线程并发处理,降低单次作业的数据规模,以提升系统总体数据处理性能。传统场景中,研究人员不仅要设计算 法,还 要额外安排大量时间管理众多设备,负责进程管理、负载均衡和 系 统 容 错 等 细 节。因此,研 究 人 员尝试借助Serverless改变这一现状,通过云端实现数 据 集、算 法 代 码 和 运 行 环 境 的 显 式 管理,同时Serverless的高并发特性免去了数据处理程序中复杂的多线程配置。提出,在应对实时系统、物联网等数据密集型场景下动态连续的数据流时,同样可以先将数据流转换成有序且有界的数据块,再执行数据处理作业。先 对 数 据 集 进 行 切 割 然 后 再 通 过 Serverless并发处理的思路可以推广到超大型文件处理领域,相 关 的 研 究 与 实 践 还 有:Netflix 视 频 转 码 系统、可编程式视频处理框架Sprocket、生化数据(DNA、RNA 序列)分析平台和高吞吐文件处理应用等。
1.3 Serverless与科学计算
科学计算涉及数学计算、数字仿真建模和高性能计算等课题,具有高精度、高吞吐和高并发的需求。为了降低软件工程开发难度,研究人员把目光投向了Serverless技术。矩阵运算是常见的数学求解问题,N 阶矩 阵乘法算法复杂 度 为O(N3),在逻辑代码中呈现为多层递归,带来不可忽视的性能瓶颈。基 于Strassen算法(复杂度为O(Nlb7)),将参与乘法的矩阵分解成粒度更细小的计算单元,最 后 在FaaS系统上并行求解这些计算单元,取代了原始多层递归运算,极大提高了矩阵运算效率。文献描述 了 一 些 借 助 Serverless平台 实施的问题 求 解 实 验:(1)根据 贝 利-波尔 温-普劳 夫公式,计算指定精度的圆周率;(2)通过划分求解空间,批量运行SHA256穷举碰撞来破解密码。可以发现,上述科学计算的实验中,实 验 人 员先把原始问题分解为计算量更小且逻辑一致的单元问题,再并行求解各单元,最后汇总求出目标解。实验表明,相比于传统多线程单体应用,函数应用效率显著提高,且单元问题越简单、并发规模越大,效率提升越明显。
1.4 Serverless与机器学习
机器学习仍是近来人工智能领域最热门的研究课题之一,其核心工作是通过原始数据集构建达到目标精度的机器学习模型。随着训练样本规模不断增大,所需计算资源不断增加,资源管理和性能瓶颈成为其中不可回避的挑战。现有机器学习框架在资源管理方面存在以下限制:(1)各类基础设施管理事务占据实验人员相当比例的工作量;(2)固定的、过度的资源配置使实验人员无法为计算集群准确设置资源的配额,导致资源浪费、负载不均。文献在现有技术基础上提出了改进的机器学习平台,实现了云端托管算法代 码 和 训 练 集,远程下发模型训练作业等支持。 Serverless环境 不 仅 支 持 计 算 节 点 与 资 源 动 态 调度,且具备一定的容错能力。实验显示,相较于同等费用的虚拟机集群,该应用在同样的训练任务中节省了44%的时间。在改进机器学习训练效率方面,文献沿用了函数应用与大数据、科学计算结合的思路,先拆分原始训练集进行耗时更短的局部训练,得到较小的局部梯度计算单元,然后再将并行求解得到的局部梯度合并,经过多次迭代得到拟合结果。在给定内存、进程数和迭代次数的情况下,相比传统机器学习模型,该模型表现出更高的吞吐率和更低的时延。
1.5 Serverless与IoT、边缘计算
IoT 系统通常由处在云端、边缘端的服务器以及大量终端 设 备 组 成。终 端 设 备-边缘 服 务 器、边缘服务器-云服务器等方向时刻进行着大规模的数据传输,这对系统时延、带宽等性能提出了巨大的挑战。异构的分布式终端与边缘服务器还涉及设备兼 容、系 统 容 错、弹性伸缩和服务质量等需求。因此,IoT-Serverless解决 方 案 应 运 而 生。文 献基于Serverless平台设计了跨越云-边-端架构的实时数据分析系统,结合了中心云的高性能算力、大 容 量 存 储 以 及 边 缘 Serverless系 统 的 高 并发、低时延等优点,区分了基于时间敏感的多级的实时数据分析工作流。该文献还实现了由人体穿戴设备组网的实时人体数据分析系统,分别模拟了灾害与日常2类重要场景中人体关键数据实时分析的实验。
2 面临的挑战
2.1 缩容至零(ScaletoZero)问题
Serverless系统的高吞吐特性源自函数实例快速扩容机制。然而,当访问量降至零时,系统将释放全部函数实例与计算资源。若之后请求到达而运行环境中没有对应的活跃函数实例时,系统将重新生成该 函 数 实 例,该过程称为冷启动。相 比已有实例的快速扩容机制,冷启动存在着不可忽视的时延问题。问题的关键在于延长函数实例的活跃期或采用缓存技术支持失活实例的热启动。当请求再次到达时,系统跳过检索仓库与生成实例的环节,直接从缓存中检出已有的函数实例副本,缩短响应时延。将空闲的尚未释放的容器节点和函数实例组织成队列结构,以提高缓存检索效率,减小系统时延。提出一种通过管理冷启动的信号标识来控制函数调度的方法,根据函数依赖关系和冷启动次数等信息提前指示函数实例的异步加载,减小函数实例启动时延。由于缓存组件容量有限,存在超时失效机制,因此,仍需解决诸如函数依赖预加载策略、请求事件预测等相关问题。
1.2 数据调度与缓存性能瓶颈
函数运行伴随着数据传输,当数据源与函数运行环境在网络、地理空间上相距较远且数据集规模足够大时,则性能瓶颈出现在数据集的调度与传输上,造成严重的网络负载与时延。把规模小得多的函数文件传输到数据源附近的环境中运行,从而降低网络负载。然而该方法只有函数计算结果规模远小于输入数据集时才有提升效果。该文献也遗留了分布式多数据源场景中数据传输、流 式Serverless函数计算等未解决的问题。引入缓存组件能有效提升数据处理性能,因此还需要研究 适 用 于 Serverless系统 的 动 态 分 布 式数据集缓存策略。当前,云提供商会为每一个运行环境提供可“就地”使用的数据缓存服务,而这种方法价格不菲,且尚未解决多函数-多数据集异步协作、分布式负载均衡等场景中的缓存需求。
1.3 触发器-调度器性能瓶颈
触发器-调度 器 是 Serverless系 统 重 要 结 构,通常由 API网关和调度队列实现,负责事件监听、任务分发等作业。对比中心化与分布式2种调度架构,前者暴露出吞吐瓶颈,而后者存在自治节点负载不均的问题。实现了总体负载均衡的分布式调度架构,在并行计算单元队列的基础上设置全局负载均衡器,实时进行队列负载监控和健康检查,当队列容量饱和或异常时,当前队列中的任务可以转移到其他队列,以兼顾负载均衡和吞吐性能。
1.4 系统安全
文献列举 了 目 前 应 用 于 Serverless系统的安全措 施:(1)采用JWT(JSON WebToken)、 SSL/TLS(SecureSocketLayer/TransportLayerSecurity)等网络通信加密手段;(2)采用云认证方式的租户隔离与管理;(3)在 API网关处设置防火墙;(4)借助 Serverless服务 自 身 的 并 发 机 制 来 分析和探测可能的网络攻击。值得注意的是,Serverless的特性也带 来 了 一些安全隐患。攻击者可以通过分析暴露的单个函数行为而逐步推导出整个函数应用的安全漏洞;高并发特性给资源耗尽攻击提供了可能,致使系统资源配额(函数最大并发、缓存上限和带宽上限等)被恶意占用并耗尽,造成系统崩溃。由于 Serverless基于容器技术,不可避免地涉及了容器领域的安全难题,例如熔断攻击、幽灵攻击等。
1.5 生态体系
Serverless技术生态的构建需要软硬件的支撑。关于 Serverless应用 调 试 工 具、函 数 依 赖管理工具等研究已经取得可观的成果,但实际应用场景中,异构多样化的底层基础设施、云服务平台和编程语言 等 在 Serverless上的兼容方案尚不成熟。现有的大部分开发工具库还不能直接迁移到Serverless平台上使用。除软件体系外,Serverless也需要相关硬件 支 持,文 献指出 现 有 Server- less技术尚不支持 GPU 硬件加速,这在一定程度上影响了其在深度学习领域的发展。形成统一的标准与定义是构建技术生态的重要环节。文献提出争论,认为Serverless更像 是 PaaS的改 进 应 用,性 能 提 升 有 限,在 应 用 开 发部署、基础设施管理和下一代云架构等方面还有很多关于标准化内容需要进一步设计和讨论。文献认为目前 NIST(NationalInstituteofStand- ardsandTechnology)标准中关于云计算的定义已经足够陈旧,可 以 考 虑 将 FaaS、BaaS等众 多 新 兴云服务模式收录其中,以适应当前云计算领域快速发展的需求。
3 结束语
Serverless技术相比于其他传统的云服务模式在基础设施管理、软件开发、并发性和专业性要求等方面存在诸多优势。在云计算快速发展和传统产业转型的背景下,合理选择Serverless作为应用开发的支撑技术将有助于业务的高效实现。本文首先介绍了Serverless系统架构与技术特性,整理了无服务器计算当前的研究现状;然后描述了无服务器计算在新型系统开发、大数据处理、科学计算、机器学习和边缘计算等前沿应用领域的实施案例;最后梳理了无服务器计算目前面临的较为突出的挑战。