В конце июля 2024 года, согласно текущему плану развития проекта, состоялся релиз универсального и мощного инструмента для построения конвейеров данных в реальном времени и event-driven приложений Apache Kafka 3.8 с поддержкой JBOD в многоуровневом хранилище, детальной настройкой уровня сжатия, улучшениями безопасности и возможностью удаление неоднозначных конфигураций. Предыдущая версия Apache Kafka 3.7 вышла в феврале 2024 года. Следующий релиз Apache Kafka 3.9 планируется в начале осени.
Разработчики проекта обновили раздел документации по обновлению до 3.8.0 с любой версии 0.8.x по 3.7.x с подробными шагами для корректного выполнения действий.
Основные изменения и дополнения в Apache Kafka 3.8:
• поддержка JBOD (Just a Bunch Of Disks) в кластерах на базе KRaft перешла в статус производственного использования. С полноценной поддержкой JBOD можно вести несколько каталогов журналов для каждого брокера, чтобы запускать крупные развёртывания с несколькими устройствами хранения на разных узлах кластера Kafka с протоколом Kafka;
• включён механизм конфигурации продюсера, брокера и топика для указания уровня сжатия, добавлены три новых целочисленных параметра для кодеков gzip, lz4 и zstd: compression.gzip.level, compression.lz4.level и compression.zstd.level. Кодек snappy исключён, поскольку он не поддерживает ни один уровень сжатия;
• появилась возможность повторять процесс загрузки при обновлении метаданных, если ни один из известных брокеров недоступен;
• в целях повышения безопасность добавлена возможность ограничивать файлы, доступные поставщикам конфигурации файлов и каталогов, чтобы избежать неограниченного доступа. Также добавлена конфигурация remote.fetch.max.wait.ms – максимальный тайм-аут удалённой выборки для запросов DelayedRemoteFetch при чтении из удалённого хранилища. Это позволяет настраивать тайм-аут в зависимости от рабочей нагрузки;
• в Kafka Streams появилась возможность совместного использования хранилища состояний, что позволяет использовать данные в хранилище состояний в нескольких приложениях без дублирования на уровне топика и настраиваемое назначение задач для потоков, что заменяет существующую внутреннюю конфигурацию задач assignor. Также добавлено несколько новых метрик для поиска утечек памяти и проблем с производительностью в приложениях Kafka Streams;
• в Kafka Connect изменено поведение свойства tasks.max.enforce, которое при установке в значение false позволяло коннектору генерировать количество задач больше максимального. Однако коннекторы, которые генерируют слишком много задач, завершаются ошибкой, как и существующие наборы задач, которые превышают свойство tasks.max. Чтобы предупредить риск возникновения такой ошибки, свойство tasks.max.enforce объявлено в Kafka 3.8 устаревшим и будет удалено в следующем мажорном релизе.
В развитии проекта и создании кода Apache Kafka 3.8 принимали участие более 200 контрибуторов и сторонних разработчиков.
Источник: habr.com