분산시스템

카프카는 여러 브로커들을 묶은 분산 클러스터 디자인이다

파일시스템 (디스크캐싱)

카프카는 메시지 저장과 캐싱을 위해 파일시스템에 크게 의존한다. 일반적으로 "디스크는 느리다"는 인식때문에 영속적인(persistent) 구조가 성능에 좋지 않은 영향을 줄 것이라고 생각하지만, 카프카에서는 성능을 희생하지 않으면서 영속적인 구조를 제공한다.

배치 처리와 압축

I/O 작업이 빈번하게 실행되면 성능 저하를 유발하기 때문에, 카프카에서는 여러 작업을 묶어서 배치처리를 하여 성능을 개선하였다.

또한 네트워크 비용을 낮추기 위해 카프카는 전송되는 메시지에 대해 GZIP 등의 다양한 압축 프로토콜을 제공한다.

효율성

바이트복사 작업의 비효율성을 피하기 위해서 프로듀서, 브로커, 컨슈머는 통일화된 바이너리 메시지 포맷을 사용한다.

일반적으로 디스크에 있는 데이터를 소켓으로 보내기 위해서는 다음과 같은 비효율적인 과정을 거친다.

  1. 운영체제가 disk의 데이터를 커널영역의 pagecache로 읽어들임
  2. 어플리케이션이 커널영역에 있는 데이터를 유저영역으로 읽어들임