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
Мультисобытийные триггеры для бессерверных вычислений
Function-as-a-Service (FaaS) — это управляемая событиями модель бессерверных облачных вычислений, в которой небольшие функции без состояния вызываются в ответ на события (такие как HTTP-запросы, новые записи в базе данных или сообщения). Современные платформы FaaS предполагают, что каждый вызов функции соответствует одному событию. Однако с точки зрения приложения желательно, чтобы функции реагировали на наборы различных типов событий или вызывались только при каждом n-м событии. Для реализации этого функции требуют дополнительного управления состоянием (например, базы данных) и пользовательской логики для определения выполнения условий срабатывания. В данной статье предлагаются мультисобытийные триггеры (multi-event triggers), которые позволяют указывать сложные условия вызова функций. Результаты оценки показывают, что в сценариях обнаружения событий этот подход снижает задержку события-вызова на 62,5%, а система может обрабатывать более 300 000 запросов/сек на ограниченном оборудовании.
Современные платформы FaaS имеют фундаментальное ограничение: каждый вызов функции может реагировать только на одно событие. Однако в практических приложениях часто требуется реализация более сложных паттернов срабатывания:
Паттерны "веер-вход/объединение" (Fan-in/Join): необходимо собрать несколько событий различных типов перед срабатыванием функции
Срабатывание по счётчику: вызов функции при получении каждого n-го события
Срабатывание по сложным условиям: на основе комбинаций AND/OR типов и количеств событий
Для сохранения преимуществ модели программирования FaaS (слабая связанность, автоматическое масштабирование, простота разработки) необходимо интегрировать логику мультисобытийного срабатывания в механизм срабатывания FaaS-платформы, а не требовать от разработчиков приложений её ручной обработки.
Предложение концепции мультисобытийных триггеров: расширение механизма срабатывания функций FaaS для поддержки сложных условий срабатывания на основе наборов событий
Проектирование архитектуры MET-движка: предложение конструкции мультисобытийного триггер-движка, интегрируемого в существующие FaaS-платформы
Разработка прототипной системы: реализация прототипа концепции, демонстрирующего осуществимость проектирования
Оценка производительности: проверка потенциала и производительности мультисобытийных триггеров в сценариях обнаружения событий
Мультисобытийные триггеры позволяют разработчикам определять сложные правила срабатывания, указывающие, когда функция должна быть вызвана при выполнении определённых комбинаций событий. Правила срабатывания состоят из типов событий и соответствующих количеств, поддерживая комбинации условий AND и OR.
Уникальность предложенного подхода заключается в том, что функция вызывается только при выполнении полного условия срабатывания, что снижает ненужные выполнения и избегает необходимости в механизмах блокировки для предотвращения условий гонки.
Ограничения географического распределения: текущее проектирование сосредоточено на многоузловых установках в одной зоне, не подходит для географически распределённых мультисобытийных триггеров
Отсутствие поддержки условия NOT: из-за невозможности гарантировать отсутствие получения определённого класса событий в распределённой среде, условие NOT не поддерживается
Проблемы синхронизации событий: необходимо решить проблемы потери событий и синхронизации, вызванные сбоями датчиков
Статья цитирует 34 связанные работы, охватывающие в основном:
Исследования FaaS-платформ и механизмов срабатывания
Оркестрация бессерверных рабочих процессов
Управление состоянием и обработка сложных событий
Оценка производительности и тестирование производительности
Ключевые цитируемые работы включают анализ архитектуры AWS Lambda, обзоры бессерверных вычислений и связанные системы оркестрации рабочих процессов.
Данная статья предлагает инновационное решение для одного из важных ограничений FaaS-платформ, обладая сильной теоретической и практической ценностью. Проектирование MET-движка сбалансировано между производительностью и масштабируемостью, а экспериментальная оценка полностью подтверждает эффективность решения. Хотя есть место для улучшения в области географического распределения и отказоустойчивости, в целом это высокачественная исследовательская работа.