Появилась новая версия Apache Samza, фреймворка с открытым исходным кодом для разработки и выполнения заданий потоковой обработки. Samza первоначально была разработана вместе с Kafka компанией LinkedIn, прежде чем была сделана с открытым исходным кодом и включена в состав Apache Software Foundation.
Новая версия содержит улучшения для лучшего управления и мониторинга локального состояния, а также улучшения API SQL Samza и нового производителя системы для хранилища больших двоичных объектов Azure.
Samza предназначена для использования как программистами, так и разработчиками. Он использует Apache Kafka для обмена сообщениями и Apache Hadoop YARN для обеспечения отказоустойчивости, изоляции процессора, безопасности и управления ресурсами. Он поддерживает локальное состояние через хранилище RocksDB, которое позволяет приложению с отслеживанием состояния масштабироваться до 1,1 миллиона событий в секунду на одной машине с твердотельным накопителем.
Улучшения управления состоянием в новом выпуске начинаются с добавления метрик KV для отслеживания максимального размера сериализованного значения, записанного в RocksDB. Это можно использовать для оценки наилучшего ограничения размера сообщений, установленного для хранилищ, поддерживаемых Кафкой.Проблема, из-за которой метрики Samza rocksdb не выдавали значения с момента Samza 1.1, также была исправлена. Еще одно улучшение добавляет нулевую проверку перед увеличением метрик bytesSerialized. До сих пор это приводило к сбою кода с исключением нулевого указателя.
Обработка метаданных заданий также была улучшена, чтобы преодолеть проблему, из-за которой время, затраченное мастером приложения на сохранение метаданных заданий, было слишком большим, когда удаленный сервер находился под большой нагрузкой. Способ выполнения этой задачи менеджером моделей заданий был изменен таким образом, что вместо промывки для каждого сообщения он теперь использует метод пакетного ввода.
Улучшения в Samza SQL означают, что теперь он будет обрабатывать операторы sql с конечной точкой с запятой и будет поддерживать подзапросы в соединениях. Он также будет лучше обрабатывать исходные имена udf и проверять типы аргументов в SamzaSQL UDF на этапе планирования выполнения.