- Razões gerais pelas quais o Kafka é rápido
- Uso de I/O de baixa latência (
ram)
- Uso de estrutura de dados de I/O sequencial (
log)
- Aplicação de zero-copy
- Sistema com escalabilidade horizontal
- Compressão de dados e processamento em lote
- O que é zero-copy?
- Uma interface suportada pelo sistema operacional que reduz a sobrecarga gerada ao copiar um arquivo para um socket
- No Linux, o comando é
sendfile
- Então, como o Kafka ficou mais rápido com zero-copy?
- Em Java, a função
transferTo foi adicionada ao pacote nio
- Usando isso, o Kafka obtém grande ganho de desempenho ao enviar mensagens diretamente da área do kernel para a rede, sem trazê-las para o espaço do usuário
- Em medições de desempenho comparando o método tradicional com o método usando
transferTo, o segundo mostrou um resultado 65% mais rápido
2 comentários
Acho que houve uma pequena confusão no conteúdo do texto sobre NIO: NIO não significa non-blocking I/O, e sim new I/O. Ele oferece suporte tanto a blocking quanto a non-blocking.
Em alguns documentos, estava escrito que era a sigla de non-blocking io, então eu tinha entendido errado. Obrigado pelo feedback.