> ## Content Index
> Fetch the complete content index at: https://www.sfeir.dev/llms.txt
> Use this file to discover other available public pages before exploring further.

# Apache Kafka 4.0 : une révolution majeure !
- URL: https://www.sfeir.dev/data/apache-kafka-4-0-une-revolution-majeure/
- Published: 2025-03-19T13:44:22.000Z
- Updated: 2025-03-19T13:44:22.000Z
- Description: 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.
- Author: Sébastien Coulle
- Tags: Kafka, Architecture, Confluent, Data, Event-Driven Architecture

La communauté [Apache Kafka](https://www.sfeir.dev/data/kesaco-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](https://www.sfeir.dev/apache-kafka-r-3-8-0-lete-est-fini-kafka-fait-sa-rentree/), rendent les configurations Docker Compose encore plus simples.

Exemple de Docker Compose simplifié :

```yaml
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](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol?ref=sfeir.dev)

### 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.

```properties
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

```bash
$ 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](https://www.sfeir.dev/back/quelles-nouveautes-arrivent-dans-java-22/) 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](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1124%3A+Providing+a+clear+Kafka+Client+upgrade+path+for+4.x?ref=sfeir.dev) 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.

```properties
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](https://archive.apache.org/dist/kafka/4.0.0/RELEASE%5FNOTES.html?ref=sfeir.dev). 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 !