23P by frogred8 1달전 | favorite | 댓글 2개
  • 카프카가 빠른 일반적 이유
    • 저지연 I/O 사용 (ram)
    • 순차적 I/O 자료구조 사용 (log)
    • zero-copy 적용
    • 수평 확장 시스템
    • 데이터 압축 및 일괄 처리
  • zero-copy란?
    • file을 socket으로 복사할 때 발생하는 부하를 개선한 os 지원 인터페이스
    • linux에서는 sendfile 명령
  • 그래서 kafka는 어떻게 zero-copy로 인해 빨라졌는가?
    • java에서 nio패키지에 transferTo 함수가 추가됨
    • 이를 사용하여 kafka는 메시지를 유저 영역으로 가져오지 않고, 커널 영역에서 네트워크로 바로 전송하여 속도에 많은 이점을 가짐
    • 기존 방식과 transferTo를 사용한 방식의 성능 측정 시 후자가 65% 더 빠른 결과를 보여줌

본문상 내용중 nio를 살짝 헷갈리신것같은데 nio는 non blocking io가 아니라 new io입니다. block이랑 non block 모두 지원해요

일부 문서에서는 non-blocking io의 약자라고 되어있어서 잘못 알고 있었네요. 피드백 감사합니다.