2025-11-12T05:49:09.677536

Multi-Event Triggers for Serverless Computing

Carl, Schirmer, Kowallik et al.
Function-as-a-Service (FaaS) is an event-driven serverless cloud computing model in which small, stateless functions are invoked in response to events, such as HTTP requests, new database entries, or messages. Current FaaS platform assume that each function invocation corresponds to a single event. However, from an application perspective, it is desirable to invoke functions in response to a collection of events of different types or only with every n\textsuperscript{th} event. To implement this today, a function would need additional state management, e.g., in a database, and custom logic to determine whether its trigger condition is fulfilled and the actual application code should run. In such an implementation, most function invocations would be rendered essentially useless, leading to unnecessarily high resource usage, latency, and cost for applications. In this paper, we introduce multi-event triggers, through which complex conditions for function invocations can be specified. Specifically, we introduce abstractions for invoking functions based on a set of $n$ events and joins of multiple events of different types. This enables application developers to define intricate conditions for function invocations, workflow steps, and complex event processing. Our evaluation with a proof-of-concept prototype shows that this reduces event--invocation latency by 62.5\% in an incident detection use-case and that our system can handle more than 300,000 requests per second on limited hardware, which is sufficient load for implementation in large FaaS platforms.
academic

Multi-Event Triggers for Serverless Computing

基本信息

  • 论文ID: 2505.21199
  • 标题: Multi-Event Triggers for Serverless Computing
  • 作者: Natalie Carl, Trever Schirmer, Niklas Kowallik, Joshua Adamek, Tobias Pfandzelter, Sergio Lucia, David Bermbach
  • 分类: cs.DC (分布式、并行和集群计算)
  • 发表时间: arXiv:2505.21199v3 cs.DC 11 Oct 2025
  • 论文链接: https://arxiv.org/abs/2505.21199

摘要

Function-as-a-Service (FaaS)是一种事件驱动的无服务器云计算模型,其中小型无状态函数响应事件(如HTTP请求、新数据库条目或消息)而被调用。当前的FaaS平台假设每个函数调用对应单个事件。然而,从应用角度来看,希望函数能够响应不同类型事件的集合或仅在每第n个事件时被调用。为了实现这一点,函数需要额外的状态管理(如数据库)和自定义逻辑来确定触发条件是否满足。本文提出了多事件触发器(multi-event triggers),通过它可以指定复杂的函数调用条件。评估结果显示,在事件检测用例中,该方法将事件-调用延迟减少了62.5%,并且系统在有限硬件上能处理超过300,000个请求/秒。

研究背景与动机

问题定义

当前FaaS平台存在一个根本性限制:每个函数调用只能响应单个事件。然而,实际应用中经常需要实现更复杂的触发模式:

  1. 扇入/汇聚模式(Fan-in/Join): 需要收集多个不同类型的事件后才触发函数
  2. 计数触发: 每收到n个事件才触发一次函数
  3. 复杂条件触发: 基于事件类型和数量的AND/OR组合条件

现有方法的局限性

目前实现多事件触发需要:

  • 在函数中维护状态,需要外部数据库存储
  • 每个事件都会调用函数,但大多数调用仅用于更新状态而非执行业务逻辑
  • 导致不必要的资源消耗、延迟增加和成本上升
  • 违背了FaaS平台应处理事件分发和函数调用的设计理念

研究动机

为了保持FaaS编程模型的优势(松耦合、自动扩展、易开发),需要将多事件触发逻辑集成到FaaS平台的触发机制中,而不是让应用开发者手动处理。

核心贡献

  1. 提出多事件触发器概念: 扩展FaaS函数触发机制,支持基于事件集合的复杂触发条件
  2. 设计MET引擎架构: 提出可集成到现有FaaS平台的多事件触发引擎设计
  3. 开发原型系统: 实现了概念验证原型,展示设计的可行性
  4. 性能评估: 在事件检测用例中验证了多事件触发器的潜力和性能

方法详解

任务定义

多事件触发器允许开发者定义复杂的触发规则,指定函数在满足特定事件组合条件时被调用。触发规则由事件类型和对应数量组成,支持AND和OR条件的组合。

触发规则形式化定义

<rule> ::= <count> ":" <type> |
           <condition> "(" <rule> "," <rule> ")"
<condition> ::= "AND" | "OR"
<count> ::= regexp:[0-9]+
<type> ::= regexp:[a-zA-Z]+

MET引擎架构

整体设计

MET引擎包含两个主要可独立扩展的组件:

  1. 调度器(Dispatcher):
    • 从负载均衡器接收事件
    • 将事件转发给适当的调用器
  2. 调用器(Invoker):
    • 处理触发逻辑
    • 为每个MET创建触发处理器
    • 维护每种事件类型的触发集合
    • 检查触发规则是否满足并调用函数

通信机制

  • 调度器和调用器使用无代理的发布/订阅消息传递
  • 调用器基于其处理的触发规则中的事件类型订阅调度器的事件
  • 支持多节点、单机架设置的分布式部署

可扩展性设计

  • 通过部署额外的调用器增加可处理的触发器数量
  • 支持触发器分区以进一步提高处理能力
  • 目标处理能力:高10万到低10万请求/秒(参考AWS Lambda单AZ负载)

技术创新点

  1. 原生平台支持: 将多事件逻辑集成到触发机制中,而非应用层
  2. 状态管理优化: 在触发引擎中集中管理状态,避免每个事件都调用函数
  3. 模块化架构: 支持独立扩展调度和调用组件
  4. 触发器分区: 通过分区支持更高的并发处理能力

实验设置

原型实现

  • 编程语言: Go语言实现调度器和调用器
  • 部署平台: Kubernetes集群(Google Kubernetes Engine)
  • 消息传递: ZeroMQ库
  • 负载均衡: Kubernetes LoadBalancer服务
  • 函数平台: 支持HTTP的任意FaaS平台

评估场景

实验1:延迟测试

  • 用例: 数据中心事件检测应用
  • 传感器类型: 温度、丢包率、功耗
  • 触发规则: OR(AND(5:packetLoss, 1:temperature), 1:powerConsumption)
  • 基线对比: 使用PostgreSQL数据库的手动状态管理
  • 负载生成: k6负载生成器,30分钟测试

实验2:并发请求测试

  • 硬件配置:
    • 单节点:c7i.2xlarge (8 vCPU, 16 GiB)
    • 四节点:4×c7i.2xlarge
    • 负载生成器:c7i.16xlarge (64 vCPU, 128 GiB)
  • 触发规则: 3:a(每三个事件触发一次)
  • 负载: 1,024字节随机字符负载

实验3:并发触发器测试

  • 硬件: c7i.large (4 vCPU, 8 GiB)
  • 触发规则: AND(2:a, 2:b),最多1,024个并发触发器
  • 负载: 128个虚拟用户,1,024字节负载

实验结果

主要结果

延迟性能改进

  • 事件-调用延迟减少62.5%(中位数)
  • 函数调用次数减少4.3倍(相比基线每个事件都调用函数)
  • 显著降低了不必要的函数调用开销

吞吐量性能

  • 单节点配置: 最大131,012.7请求/秒(4,096虚拟用户)
  • 四节点配置: 最大313,154.81请求/秒(64虚拟用户)
  • 吞吐量随并发请求线性增长至2^11个请求

并发触发器性能

  • 单触发器: 236,601.77请求/秒
  • 8个触发器: 63,717.27请求/秒
  • 1,024个触发器: 883.67请求/秒
  • 性能主要受CPU限制,通过并行化检查触发规则来优化

实验发现

  1. 显著的延迟改进: MET引擎相比手动状态管理方法显著减少了事件处理延迟
  2. 良好的可扩展性: 系统展现出良好的水平扩展能力
  3. 高吞吐量: 在有限硬件上达到了大型FaaS平台所需的处理能力
  4. 并发限制: 单调用器的并发触发器数量存在CPU限制,但可通过分区缓解

相关工作

状态管理方案

  • Crucial: 分布式共享对象层
  • Cloudburst: 集成自动扩展键值存储
  • Boki: 基于日志API的状态持久化
  • Faasm: WebAssembly运行时的内存区域共享

工作流编排

  • TriggerFlow: 基于Knative的自定义工作流引擎
  • FaaSFlow: 跨FaaS工作节点的分布式工作流调度
  • DataFlower: 基于数据可用性的函数调度

与现有方案的区别

本文方案的独特之处在于只有在完整触发条件满足时才调用函数,减少了不必要的执行,避免了竞态条件的锁机制需求。

结论与讨论

主要结论

  1. 多事件触发器有效解决了FaaS平台缺乏原生扇入支持的问题
  2. MET引擎显著降低了调用延迟并减少了资源消耗
  3. 系统具备在大规模云环境中部署的性能能力
  4. 保持了无服务器范式的核心优势(松耦合、自动扩展、最小运维开销)

局限性

  1. 地理分布限制: 当前设计专注于单机架多节点设置,不适合地理分布的多事件触发器
  2. NOT条件不支持: 由于分布式环境中无法保证某类事件未被接收,不支持NOT条件
  3. 事件同步问题: 需要解决传感器故障导致的事件丢失和同步问题

未来方向

  1. 地理分布支持: 使用冲突自由复制数据类型(CRDT)跟踪事件
  2. 触发器类型扩展: 支持XOR等更多触发器类型
  3. 容错机制: 引入事件生存时间(TTL)机制处理过期事件
  4. 平台集成: 与FaaS平台的负载均衡等功能深度集成

深度评价

优点

  1. 问题识别准确: 准确识别了FaaS平台在复杂事件处理方面的根本性限制
  2. 方案设计合理: MET引擎架构设计考虑了可扩展性和实用性
  3. 实验充分: 从延迟、吞吐量、并发等多个维度进行了全面评估
  4. 实际价值高: 解决了实际应用中的痛点问题,具有很强的实用价值
  5. 性能表现优秀: 62.5%的延迟减少和30万+请求/秒的处理能力证明了方案的有效性

不足

  1. 地理分布局限: 对于全球分布式应用场景支持不足
  2. 容错机制简单: 对于网络分区、节点故障等异常情况的处理机制不够完善
  3. 触发规则表达能力: 当前的AND/OR组合可能无法覆盖所有复杂的业务场景
  4. 与现有平台集成: 作为外部组件集成,可能无法充分利用平台内部优化

影响力

  1. 学术贡献: 为FaaS领域提供了新的研究方向和解决方案
  2. 工业价值: 可直接应用于现有FaaS平台,提升复杂事件处理能力
  3. 标准化潜力: 有可能成为FaaS平台多事件触发的标准实现方式
  4. 可复现性: 开源原型实现提供了良好的可复现性

适用场景

  1. IoT数据处理: 需要汇聚多个传感器数据的物联网应用
  2. 复杂事件处理: 金融交易监控、网络安全检测等需要关联分析的场景
  3. 工作流编排: 需要等待多个前置任务完成的无服务器工作流
  4. 批处理优化: 将多个小事件聚合后批量处理以提高效率

参考文献

论文引用了34篇相关文献,主要涵盖:

  • FaaS平台和触发机制研究
  • 无服务器工作流编排
  • 状态管理和复杂事件处理
  • 性能评估和基准测试

关键参考文献包括AWS Lambda架构分析、无服务器计算综述、以及相关的工作流编排系统等。


这篇论文针对FaaS平台的一个重要局限性提出了创新性解决方案,具有很强的理论价值和实用价值。MET引擎的设计兼顾了性能和可扩展性,实验评估充分验证了方案的有效性。虽然在地理分布和容错方面还有改进空间,但整体上是一项高质量的研究工作。