23 Punkte von frogred8 2024-05-19 | 2 Kommentare | Auf WhatsApp teilen
  • 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

 
vwjdalsgkv 2024-05-19

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.

 
frogred8 2024-05-19

In einigen Dokumenten stand, dass es für „non-blocking io“ steht, deshalb hatte ich das falsch verstanden. Danke für das Feedback.