Apache Kafka 4.1: 3 больших вещах должны знать

Confluent спонсировал этот пост.

Apache Kafka уже давно по умолчанию для архитектур данных в реальном времени, и каждый выпуск расширяет свои возможности для обработки новых шаблонов и требований. Apache Kafka 4.1 продолжает эту эволюцию с новыми функциями, которые удовлетворяют потребности развивающихся разработчиков.

Новый релиз включает в себя что-то для всех энтузиастов по потоке данных, от опытных ветеранов Кафки до кафки, любимых разработчиков. В частности, KAFKA 4.1 касается трех областей, где разработчики просят на собственных решениях: гибкие шаблоны обработки сообщений, современные стандарты аутентификации и более устойчивые операции обработки потока.

Вот некоторые основные моменты выпуска 4.1, которые должны вызвать ваш интерес.

Эволюция очередей для кафки

Выпуск 4.1 Moves Feming KIP-932 от «раннего доступа» к «Предварительному просмотру», что означает, что были предприняты огромные усилия, чтобы снести очереди для Kafka более стабильными, а также добавление новых функций.

Для быстрого резюме KIP-932 представляет концепцию кооперативного потребления. Это позволяет нескольким потребителям обрабатывать сообщения из одних и тех же разделов темы, а не «эксклюзивное задание», которое мы видим с традиционными потребителями Kafka. Когда мы укладываем в соответствие с подсчетом и доставкой для облегчения повторных ресурсов, это позволяет Kafka обрабатывать набор вариантов использования, которые обычно строятся вокруг концепции очереди.

Подумайте о сценариях, в которых сообщение представляет собой отдельную единицу работы или задачу, и пул приложений может независимо обрабатывать каждое сообщение — признание сообщения по мере завершения обработки. Очередь лучше подходит для этого сценария, чем разделенная тема в группе потребителей.

KIP-932 представляет новый вид группы под названием «Общая группа», которая обеспечивает это новое поведение. Новый класс KafkashareConsumer включает в себя свойство конфигурации, которое позволяет приложениям мелкозернистый контроль над жизненным циклом и подтверждением каждого сообщения. Установив свой свойство chare.acknowledgment.mode для явного, клиент теперь может использовать значения перечисления подтверждениятип, чтобы указать, как сообщение перемещается через статусную машину раздела Share.

Когда сообщение обрабатывается успешно, используйте метод подтверждения kafkashareconsumer с типом признания приема, чтобы перенести это сообщение на признанный этап жизненного цикла. Реальный контроль здесь исходит из случаев исключения. Разработчик может определить, где выпустить или отклонить потребительскую оболочку на основе типа исключения, которое произошло во время обработки. Для ошибок, которые можно повторно повторно, используйте выпуск (потенциально) отправьте сообщение обратно в доступное состояние. Если ошибка не подлежит восстановлению или сообщение ошибочно, используйте отклонение, чтобы отправить сообщение в архивное состояние и перейти с обработкой других.

Вот как это выглядит на практике:

  • Во -первых, мы настраиваем и создаем экземпляр kafkashareconsumer.
  • Этот экземпляр потребителя будет подписаться на одну или несколько тем.
  • Вызов опроса вернет партию потребительскихр.
  • Итерация над этими записями, мы пытаемся обработать каждое сообщение в методе Doprocessing ().
  • Если эта обработка успешна, мы признаем () эту запись с помощью подтверждения
  • Если мы поймаем исключение, мы подтвердим () эту запись с помощью AcenceledGementType.Release.
  • Для уходов контроля среди нас, явно вызов метода kafkashareconsumer.commitsync (), будет совершать подтверждения уровня сообщений из этой партии. В противном случае подтверждения автоматически совершаются.

Public Static Void Main (строка[] args) {Свойства props = new Properties (); props.put («bootstrap.servers», «Localhost: 9092»); props.put («group.id», «My-Share Group»); props.put («share.acknowledgement.mode», «efficit»); Kafkashareconsumer consumer = new kafkashareconsumer <> (реквизит, new StringDeserializer (), new StringDeserializer ()); // подписаться на тему, присоединяясь к Care Group Consumer.SubScribe (list.of («foo»)); while (true) {// Извлекать партию записей, полученных для этого потребителя … ConsumerErcords records = consumer.poll (duration.ofmillis (100)); recordss.foreach (record -> {try {doprocessing (record); // подтверждение этого события было обработано без ошибок. Consumer.acknowledge (record, ancenceledgetype.accep);} Catch (Exception e) {logger.error («Потребитель: Обработка ошибок: {}», e.getmessage (), E); Consumer.acknowledge (record, acknowledgetype.release); // Необязательно: совершить подтверждение этой партии записей. //consumer.commitsync (); }} 123456789101112131415161718192021222324252627282930 Public Static Void Main (строка[] args) {Свойства props = new Properties (); props.put («bootstrap.servers», «Localhost: 9092»); props.put («group.id», «My-Share Group»); props.put («share.acknowledgement.mode», «efficit»); Kafkashareconsumer consumer = new kafkashareconsumer <> (реквизит, new StringDeserializer (), new StringDeserializer ()); // подписаться на тему, присоединяясь к Care Group Consumer.SubScribe (list.of («foo»)); while (true) {// Извлекать партию записей, полученных для этого потребителя … ConsumerErcords records = consumer.poll (duration.ofmillis (100)); recordss.foreach (record -> {try {doprocessing (record); // подтверждение этого события было обработано без ошибок. Consumer.acknowledge (record, ancenceledgetype.accep);} Catch (Exception e) {logger.error («Потребитель: Обработка ошибок: {}», e.getmessage (), E); Consumer.acknowledge (record, acknowledgetype.release); // Необязательно: совершить подтверждение этой партии записей. //consumer.commitsync (); }}

Здесь еще предстоит сделать. Но разработчикам рекомендуется продолжать экспериментировать и предоставлять обратную связь.

Поддержка нативной JWT-носителя упрощает аутентификацию Kafka

До сих пор защита ваших клиентских приложений KAFKA часто включала управление статическими учетными данными с использованием типа гранта client_credentials. Альтернативой было создание и поддержание некоторых пользовательских интеграций с подключаемой интерфейсом аутентификации Кафки, возможно, с таким поставщиком идентификаторов, таким как Окта, AWS IAM, Google Cloud IAM или Auth0. Это привело к долгоживущим, статическим полномочиям или необходимым организациям для создания и поддержания сложного, часто неподдерживаемого решения для интеграции клиентов Kafka со своим современным поставщиком идентификации.

С KIP-1139 клиенты KAFKA теперь поддерживают тип гранта токенов JWT-носителя, позволяя клиентам надежно аутентифицировать, используя стандартные токены JSON Web (JWTS) из своих существующих поставщиков идентификаций OAUTH 2.O и OpenID Connect (OIDC). Это устраняет необходимость в статических полномочиях. Предприятия с сильными требованиями безопасности могут использовать эту собственную поддержку JWT-носителя для всех клиентских приложений KAFKA: производителей, потребителей и разъемов KAFKA.

Проконсультируйтесь с документацией вашего облачного поставщика о том, как получить информацию о подключении, необходимую вашим клиентам и брокерам. Чтобы узнать, как настроить своего поставщика идентификаций, чтобы использовать функциональность токеновых грантов JWT-носителя, см. Эта сликающая документация.

Кафка потоковой перебалансиров

Ранний доступ к доступу KIP-1071 начинает применять уроки от KIP-848 (следующее поколение протокола перебаланса группы потребителей) к приложениям Kafka Streams. В качестве освежения, с KIP-848, брокеры Kafka теперь координируют группы потребителей перебалансировки и устраняют сценарии «Stop the World» в обработке событий.

Применение этого к потокам Kafka означает, что брокеры также могут координировать задание и решения для перебалансировки для топологий кафки. Это обеспечивает «оптимизированную» координацию »отдельно от традиционной группы потребительской группы.

KIP-1071 представляет новый протокол группы Streams Group, Group.Protocol = Streams, который помогает различить различные типы потребителей в экосистеме потоковой передачи событий. В AD API есть новые операции для описания этих групп потоков, а также сценарии нового интерфейса командной строки (CLI).

Что касается мониторинга, новые метрики на стороне брокера также разделяют эти протоколы-будь то традиционная группа потребителей, группа общей группы или приложение потоков. Повышенная видимость на уровне задачи в вашем приложении Kafka Streams поможет в сценариях отладки и устранения неполадок.

Поскольку это для функции раннего доступа, это строго для тестирования и еще не готово к производству. Разработчикам Streams Kafka предлагается экспериментировать и обеспечивать обратную связь, которая поможет сформировать будущее этой функции.

Дополнительные функции в Apache Kafka 4.1

В выпуске Apache Kafka 4.1 существует еще много полезных улучшений, в том числе:

  • KIP-848: протокол группы потребителей, охватывающий посредников и клиента после перебалансировки, управляемого брокером. Это обеспечивает более быстрые и стабильные перебалансы группы потребителей.
  • KIP-890: защита от сервера транзакций, которая улучшает поведение и правильность транзакции.
  • KIP-853: CRAFT CONTORS CONTORS, в частности, обновление с статических до динамических избирателей.
  • KIP-1050: введена улучшенная и единая стратегия обработки ошибок для транзакций.
  • KIP-1111: обеспечивает явное именование для внутренних тем Kafka Streams.
  • KIP-1109: представляет унифицированные метрические названия для потребителей и производителей.

Для получения более подробной информации об этих и других KIP, проконсультируйтесь с заметками.

Чтобы узнать больше обо всех вещах потоковой передачи данных с Apache Kafka и Apache Flink, ознакомьтесь с нашей страницей Confluent Developer. Это универсальный магазин, который предлагает бесплатный образовательный контент, статьи, видео и учебные пособия, которые помогут вам в вашем путешествии по потоку данных.

Confluent, основанная оригинальными создателями Apache Kafka, впервые провели полную платформу потоковой передачи данных, которая транслирует, соединяет, обрабатывает и управляет данными, когда она течет по всему бизнесу. С Confluent любая организация может модернизировать свой бизнес и управлять им в режиме реального времени. Узнайте больше последних из Comfluent Trending Stories YouTube.com/ThenewStack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Сандон Джейкобс — старший защитник разработчика в Confluent, базирующемся в Северной Каролине. Сандон построил микросервисы и приложения потоковой передачи событий в нескольких отраслях, включая телевизионные медиа, энергию, мобильную рекламу, железнодорожную грузовую логистику и здравоохранение. Этот опыт охватывает несколько … Подробнее от Сандона Джейкобса

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *