- Raisons générales pour lesquelles Kafka est rapide
- utilisation d'E/S à faible latence (RAM)
- utilisation de structures de données en E/S séquentielles (log)
- application du zero-copy
- système à montée en charge horizontale
- compression des données et traitement par lots
- Qu'est-ce que le zero-copy ?
- interface prise en charge par l'OS qui améliore la surcharge générée lors de la copie d'un fichier vers un socket
- sous Linux, la commande
sendfile
- Alors, comment Kafka est-il devenu plus rapide grâce au zero-copy ?
- en Java, la fonction
transferTo a été ajoutée dans le package NIO
- en l'utilisant, Kafka envoie les messages directement du noyau vers le réseau sans les faire passer par l'espace utilisateur, ce qui apporte de gros gains de performance
- lors de mesures de performance entre la méthode existante et celle utilisant
transferTo, cette dernière a montré un résultat 65 % plus rapide
2 commentaires
Il me semble qu’il y a une légère confusion dans le contenu de l’article à propos de NIO : NIO ne signifie pas non-blocking I/O, mais New I/O. Il prend en charge à la fois les modes bloquant et non bloquant.
Dans certains documents, c'était indiqué comme l'acronyme de non-blocking io, donc je m'étais trompé. Merci pour le retour.