카프카의 내부 동작 원리와 구현에 대해 알아보자.
제일 중요한 부분 중 하나는 리플리케이션 동작이다. 카프카는 물론 일반적인 분산 시스템에서 애플리케이션의 고가용성을 위해 내부적으로 리플리케이션 동작을 하게 된다.
이는 매우 어려운 부분일 뿐 아니라 자칫하면 애플리케이션 성능에도 영향을 미친다.
카프카에서는 안정성을 높이는 동시에 최대한 성능에 영향을 주지 않도록 설계되었다.
카프카는 무수히 많은 데이터 파이프라인의 정중앙에 위치하는 메인 허브 역할을 한다.
근데 중앙에서 메인 허브 역할을 하는 카프카 클러스터가 만약 하드웨어의 문제나 점검으로 장애가 일어나고 이 때문에 전체 데이터 파이프라인에 영향이 생긴다면 매우 심각한 문제일 것이다.
따라서 카프카는 초기 설계 단계부터 한 두대에서 장애가 일어나도 안정적인 서비스가 운영될 수 있도록 구상돼었다.
이 때 안정성을 확보하기 위해 카프카 내부에서는 리플리케이션이라는 동작을 하게 되었다.
카프카는 브로커의 장애에도 불구하고 연속적으로 안정적인 서비스를 제공함으로써 데이터 유실을 방지하는 유연성을 제공한다.
카프카의 리플리케이션 동작을 위해 토픽 생성 시 필수값으로 replication factor라는 옵션을 설정해야 한다.
실제 리플리케이션 되는 것은 토픽이 아니라 토픽을 구성하는 각각의 파티션이다.
리플리케이션이 N개 있을 때 하나라도 살아있으면 메시지 손실 없이 안정적으로 메시지를 주고받을 수 있다.
토픽 상세보기 명령어를 실행해보면 출력 내용 중 파티션의 리더(Leader) 라는 부분이 있다.