Aller au contenu

Apache Kafka 4.0 : une révolution majeure !

On ne présente plus Apache Kafka, et la release majeure (4.0), sortie le 18 mars 2025, apporte de nombreuses nouveautés et améliorations qui améliorent notre quotidien. Venez les découvrir dans cet article.

Apache Kafka et la release majeure (4.0), sortie le 18 mars 2025

La communauté Apache Kafka a frappé fort avec la sortie de la version 4.0, apportant un ensemble de nouveautés et d'améliorations significatives. Voici un aperçu des changements majeurs :

Fin de l'ère Apache Zookeeper

Après plus de 10 ans de loyaux services, Zookeeper tire sa révérence. Apache Kafka 4.0 est la première release sans Zookeeper, remplacé par KRaft. Cette transition apporte plusieurs avantages :

  • Simplification de l'administration : Moins de composants à gérer.
  • Performances accrues : KRaft est optimisé pour Kafka.
  • Facilité de développement local : Les images natives disponibles depuis Apache Kafka 3.8.0, rendent les configurations Docker Compose encore plus simples.

Exemple de Docker Compose simplifié :

services:
  broker:
    image: apache/kafka-native:latest
    hostname: broker
    container_name: broker
    ports:
      - '9092:9092'
    environment:
      KAFKA_NODE_ID: 1
      ...

Rebalancing ultra performant

Depuis Apache Kafka 3.7.0, la communauté expérimente un nouveau mode de rebalancement qui améliore grandement les performances. En tant qu’utilisateurs d’Apache Kafka, nous avons tous été confrontés aux problématiques de rebalance, notamment avec le fameux "stop-the-world". Les plus téméraires auront même testé le CooperativeStickyAssignor. Ce nouveau protocole est activé par défaut sur cette version. Plus d'informations dans la KIP-848

Les queues arrivent...

... timidement en Early Access mais cette extension des capacités de Apache Kafka nous permettra de gérer encore plus de use-cases au sein de la même plateforme. Pour pouvoir les tester, vous pouvez activer cette fonctionnalité dans la configuration de votre broker.

unstable.api.versions.enable=true
group.coordinator.rebalance.protocols=classic,consumer,share

Vous pouvez ensuite consommer un topic en mode "Queue" via la nouvelle CLI

$ bin/kafka-console-share-consumer.sh --bootstrap-server localhost:9092 --topic mon-topic

Autres améliorations et évolutions

Cette release arrive avec un ensemble d'évolution et d'améliorations qu'il serait difficile de lister. En voici un résumé:

  • Fin du support de java 8 : Maintenant, c'est Java 11 minimum pour les clients Kafka (consumer / producer / kafka stream) et c'est Java 17 pour le Broker, Kafka Connect et les autres outils.
  • Quelques changements de configuration par défaut : la plus notable sur le linger.ms. Il passe de 0 à 5 ms. Enfin, par défaut, Apache Kafka va regrouper les messages côté producer, réduisant ainsi les échanges avec le broker.
  • Clarification des montées de versions : Nous avons souvent des doutes lors de la montée de version d'une librairie. Celle-ci peut être ancienne et le gap pour passer à la plus récente peut faire peur. Avec cette release, la communauté a mis à disposition un tableau récapitulatif pour éviter les mauvaises surprises.
    En voici un résumé:
Version source Version intermédiaire Mise à jour vers 4.x
2.1.x - 3.9.x non requis Simple et supporté
0.11.x - 2.0.x passer par une 3.4.x - 3.9.x Simple et supporté
0.11.x - 2.0.x Sans version intermédiaire, non testé et non supporté
  • Nouvelle valeur pour auto.offset.reset : Il nous permet de positionner correctement un consommateur sur un topic quand son offset est invalide ou inexistant. Nous connaissons historiquement le earliest, latest et none. Une nouvelle valeur permet désormais de repositionner un consommateur à une date précise (ISO8601 - PnDTnHnMn.nS). Cette option évite de manipuler les offsets manuellement via les CLIs.
auto.offset.reset=by_duration:P30D  (This reset back by 30 days)

En route vers la version Apache Kafka 5.0

Le changelog complet de la version 4.0 est disponible ici. L’avenir d’Apache Kafka reste à écrire, mais la version 4.0 pose des bases solides pour ses futures évolutions. Pour rappel, la version 3.0.0 est sortie il y a 3 ans et demi. Il nous tarde de découvrir la suite ! Peut-être allons-nous avoir des surprises au Current London du 20-21 mai 2025 !

Dernier