Какие последние важные изменения или особенности в Apache Kafka вам известны?

«Какие последние важные изменения или особенности в Apache Kafka вам известны?» — вопрос из категории Брокеры сообщений, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

KIP-500 (KRaft): Самое значимое изменение — удаление зависимости от ZooKeeper для управления метаданными. Теперь Kafka использует встроенный Raft-консенсус (режим KRaft). Это упрощает архитектуру, повышает стабильность и упрощает эксплуатацию.

Ключевые возможности для разработки:

  1. Транзакции и Exactly-Once Semantics (EOS): Гарантированная однократная доставка между топиками.
  2. Улучшенный балансировщик разделов (StickyPartitioner): Уменьшает количество ребалансировок в потребительских группах.

Пример конфигурации продюсера с идемпотентностью для EOS:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("enable.idempotence", "true"); // Включает идемпотентность
props.put("acks", "all"); // Гарантирует запись на всех репликах
props.put("max.in.flight.requests.per.connection", "5"); // Допустимо при enable.idempotence=true

Producer<String, String> producer = new KafkaProducer<>(props);

Тренды: Активное развитие Kafka Streams для потоковой обработки и глубокая интеграция с облачными managed-сервисами (Confluent Cloud, Amazon MSK).