Apache Flink выпустил Stateful Functions 2, первую версию своей управляемой событиями базы данных, которая включает функцию функций с отслеживанием состояния, небольшой фрагмент кода, который вызывается через сообщение.
Функции с отслеживанием состояния (StateFun) сочетают поддержку состояния и композиции с реализациями FaaS, такими как AWS Lambda, и фреймворками оркестровки ресурсов, такими как Kubernetes.
Apache Flink — это платформа с открытым исходным кодом для распределенной потоковой и пакетной обработки данных с механизмом потоковых данных для распределения данных и распределенных вычислений по потокам данных. Flink имеет ряд API, включая DataSet API для статических данных, встроенных в Java, Scala и Python; API DataStream для неограниченных потоков, встроенных в Java и Scala; API таблиц с SQL-подобным языком выражений, встроенным в Java и Scala; и потоковый SQL API, который позволяет выполнять SQL-запросы к потоковым и пакетным таблицам, с синтаксисом, основанным на Apache Calcite.
Новый выпуск стал возможным благодаря тому, что в начале года к Apache Flink присоединились функции с отслеживанием состояния. Функции с отслеживанием состояния были созданы как библиотека, работающая на Flink, для создания приложений общего назначения, управляемых событиями.
Разработчики могут использовать библиотеку для реализации функций для получения и отправки сообщений и поддержания состояния в постоянных переменных. Flink предоставил среде выполнения эффективное однократное состояние и обмен сообщениями. Команда Flink описывает Stateful Functions 1.0 как смесь, вдохновленную FaaS, между потоковой обработкой и программированием акторов — на стероидах.
Новый выпуск, Stateful Functions 2.0, физически отделяет функции от Flink и JVM и вместо этого вызывает их через простые службы. Это позволяет выполнять функции на платформе FaaS, развертывании Kubernetes или за микросервисом. Flink вызывает функции через конечную точку службы через HTTP или gRPC на основе входящих событий и предоставляет доступ к состоянию. Поскольку доступ к состоянию является частью вызова функции, функции ведут себя как приложения без состояния.
Функции могут быть реализованы на любом языке программирования, который может обрабатывать HTTP-запросы или запускать сервер gRPC. Проект StateFun включает очень тонкий SDK для Python, принимающий запросы и отправляющий их аннотированным функциям. Команда Flink планирует предоставить аналогичные SDK для других языков, таких как Go, JavaScript или Rust. Пользователям не нужно писать какой-либо код Flink; входящие / исходящие данные и конечные точки функций могут быть определены в компактной спецификации YAML.
StateFun доступен на GitHub.