1. Kafka Design의 특징

분산 시스템

같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹

서버를 추가해 부하를 분산 가능하지만 불필요한 비용이 증가하기 때문에 적절한 수를 유지하는 것이 좋다.

페이지 캐시

OS는 물리적 Memory에 Application이 사용하는 부분을 할당하고 남은 잔여 Memory 일부를 페이지 캐시로 유지해 OS의 전체적인 성능 향상을 높이게 된다.

카프카가 Disk에 직접 읽고 쓰는 것이 아닌 페이지 캐시를 통해 Disk를 읽고 쓴다.

JVM Heap Size

Kafka는 Java 기반의 JVM을 사용하는 Application, 시작할 때 Memory가 할당되는 영역인 Heap이 만들어진다. Kafka는 기본값으로 1GB의 Heap Memory를 사용하도록 설정(설정 파일에서 변경 가능, -Xmx6G -Xms6G)되어 있다.

Kafka는 초당 Message 단위, 메가비트 단위를 처리함에 있어 5GB의 Heap Memory면 충분하고 남아있는 Memory는 페이지 캐시로 사용하기를 권장한다. 페이지 캐시를 서로 공유해야 하기 때문에 하나의 시스템에 Kafka를 다른 애플리케이션과 함께 실행하는 것을 권장하지 않는다.