- Razones generales por las que Kafka es rápido
- Usa I/O de baja latencia (
ram)
- Usa una estructura de datos de I/O secuencial (
log)
- Aplica zero-copy
- Sistema con escalado horizontal
- Compresión de datos y procesamiento por lotes
- ¿Qué es zero-copy?
- Una interfaz soportada por el sistema operativo que mejora la sobrecarga que ocurre al copiar un archivo a un socket
- En Linux, el comando
sendfile
- Entonces, ¿cómo se volvió más rápido Kafka gracias a zero-copy?
- En Java se añadió la función
transferTo al paquete nio
- Al usar esto, Kafka obtiene una gran ventaja de velocidad al enviar los mensajes directamente a la red desde el espacio del kernel, sin traerlos al espacio de usuario
- Al medir el rendimiento del método tradicional frente al método que usa
transferTo, este último mostró un resultado 65% más rápido
2 comentarios
Creo que en el contenido principal se confundió un poco lo de NIO: NIO no significa
non-blocking IO, sinonew IO. Soporta tantoblockingcomonon-blocking.En algunos documentos decía que era la abreviatura de non-blocking io, así que yo lo había entendido mal. Gracias por la retroalimentación.