De vrais runs. De vrais disques. Reproductibles.
Performances de StreamFlow en débit et latence — mesurées sur le même matériel, avec les outils officiels Kafka, face à Apache Kafka et Redpanda. Aucun mock, aucun fake en mémoire, aucun transport simulé.
StreamFlow vs Apache Kafka vs Redpanda
La seule comparaison honnête : trois backends brokers, les mêmes outils officiels kafka-*-perf-test, le même cluster AWS, l'API Kafka sur :9092.
Débit produce
records / seconde · plus haut = mieuxDébit consume
records / seconde · plus haut = mieuxAu-delà du fil Kafka — zéro Kafka dans le chemin
StreamFlow a son propre transport binaire. Sur le même cluster AWS, hors du protocole Kafka :
Ce que le moteur écrit sur disque
DirectIOBenchmark — multi-shard, group-commit, vraies écritures disque. Hôte 4 vCPU, Oracle JDK 25, backends FileChannel / Panama FFM.
Reproduisez vous-même
Chaque chiffre ci-dessus provient d'un run réel. Voici exactement comment — mêmes outils, même config.
| Hardware | AWS · 3× m6id.2xlarge brokers + 1× c6i.xlarge load generator |
| Tools | Apache Kafka 3.7.0 — kafka-producer-perf-test / kafka-consumer-perf-test |
| Workload | 1,000,000 records · 256-byte payload · 16 partitions |
| Durability | acks=1 · replication factor RF=3 · warm run (JIT hot) |
| Broker builds | StreamFlow (this release) · apache/kafka:3.7.0 (KRaft) · redpandadata/redpanda:v24.1.7 |
| Storage engine | DirectIOBenchmark · 4-vCPU · Oracle JDK 25 · FileChannel / Panama FFM |
Une ligne chacun — la CLI livrée enveloppe les deux benchmarks
1# storage engine — native disk hot path, every backend, no network, no Kafka
2java -Xmx4g --enable-native-access=ALL-UNNAMED -cp streamflow.jar \
3 com.streamflow.app.cli.StreamFlowCli bench disk
4
5# Kafka wire — stock kafka-clients 3.7.0 against StreamFlow's Kafka port (or any broker)
6java -cp streamflow.jar com.streamflow.app.cli.StreamFlowCli \
7 bench kafka --bootstrap $NODE:9092bench disk est la même mesure que le test JUnit DirectIOBenchmark, empaqueté pour tourner depuis le jar. bench kafka utilise les flags canoniques (acks=1, batch.size=65536, linger.ms=5). Lancez chaque benchmark deux fois et reportez le run warm (JIT-hot).
Mêmes chiffres à la main — outils perf Apache + le dépôt
1# produce — 1M records, 256B, acks=1, RF=3 topic
2kafka-producer-perf-test --topic bench --num-records 1000000 --record-size 256 \
3 --throughput -1 --producer-props bootstrap.servers=$NODE:9092 acks=1 \
4 batch.size=65536 linger.ms=5
5
6# consume — same 1M records
7kafka-consumer-perf-test --topic bench --messages 1000000 \
8 --bootstrap-server $NODE:9092
9
10# storage engine — native disk hot path from the StreamFlow repo
11mvn -q -Plarge-heap test -Dtest=DirectIOBenchmark -pl streamflow-coreLes wrappers CLI ci-dessus et ces commandes brutes mesurent les mêmes chemins — utilisez ce que vous avez sous la main.
Les nuances honnêtes
La transparence est le point. Un benchmark non reproductible ou secrètement favorable ne mérite pas d'être publié.
Les chiffres, c'est facile. Faites tourner.
Montez un cluster, pointez les outils officiels Kafka dessus, et reproduisez le tableau ci-dessus — ou construisez une app live dans le navigateur en 3 minutes.