- Allgemeine Gründe, warum Kafka schnell ist
- Nutzung von Low-Latency-I/O (RAM)
- Verwendung sequenzieller I/O-Datenstrukturen (Log)
- Einsatz von Zero-Copy
- Horizontal skalierbares System
- Datenkomprimierung und Batch-Verarbeitung
- Was ist Zero-Copy?
- Eine vom Betriebssystem unterstützte Schnittstelle, die den Overhead beim Kopieren einer Datei in einen Socket reduziert
- Unter Linux der Befehl
sendfile
- Wie genau wurde Kafka also durch Zero-Copy schneller?
- In Java wurde im
nio-Paket die Funktion transferTo hinzugefügt
- Kafka nutzt diese, um Nachrichten nicht in den User-Space zu holen, sondern sie aus dem Kernel-Space direkt über das Netzwerk zu senden, was große Geschwindigkeitsvorteile bringt
- Ein Performance-Vergleich zwischen dem bisherigen Verfahren und dem Verfahren mit
transferTo zeigte, dass Letzteres 65 % schneller war
2 Kommentare
Ich glaube, im Haupttext gibt es eine kleine Verwechslung bei NIO: NIO steht nicht für Non-Blocking I/O, sondern für New I/O. Es unterstützt sowohl Blocking als auch Non-Blocking.
In einigen Dokumenten stand, dass es für „non-blocking io“ steht, deshalb hatte ich das falsch verstanden. Danke für das Feedback.