kafka 기본 개념

Jeongkuk Seo
sjk5766
Published in
5 min readAug 19, 2023

앞으로 카프카를 본격적으로 사용할 것 같아 입문자로서 기초적인 개념을 정리해보자.카프카는 분산형 데이터 스트리밍 플랫폼으로 아래와 같은 장점이 있다.

  • 실시간으로 대 용량의 데이터 처리가 가능
  • 확장성이 좋고 고가용성을 제공한다. 서버에 장애가 생겨도 데이터 손실없이 복구가 가능하다.
  • 다른 메시지 브로커와 달리 데이터를 삭제하지 않는다.

카프카를 사용하면 알아야 하는 기본 개념들이 있는데 하나씩 정리해보자.

토픽과 파티션

카프카는 여러 토픽을 가질 수 있고, 하나의 토픽은 여러 파티션을 가질 수 있다.

프로듀서가 데이터를 카프카에게 전달하면 카프카의 파티션에 데이터가 순서대로 쌓이게 된다.

하나의 토픽에 파티션이 2개라면 데이터는 어디에 들어가야 할까? 프로듀서는 데이터를 보낼 때 키를 지정할 수 있는데 키가 없다면 Round Robin 방식으로 파티션 2개에 번갈아 저장되고, 키가 있다면 해시값을 생성해 특정 파티션에만 데이터를 저장할 수 있다.

키가 없어 Round Robin 방식으로 동작하는 경우

파티션은 처음 생성하고 늘릴 수는 있지만 줄이는 건 불가능하기 때문에 주의해야 하고 파티션에 적재된 데이터는 옵션에 따라 일정시간 or 일정 데이터 크기만큼 유지하다가 삭제가 가능하다.

브로커와 복제

브로커는 카프카가 설치되어 있는 서버 단위를 말하며, 보통 3개 이상의 브로커로 구성하여 사용하는 것을 권장한다.

Replication은 파티션의 복제를 뜻한다. 만약 Replication이 1이라면 브로커 1개에 파티션이 1개만 존재하게 된다.

Replication이 2라면 브로커 2개에 걸쳐 파티션은 원본 1개, 복제본 1개로 총 2개가 존재한다.

원본 파티션을 leader 파티션이라고 부르며 프로듀서가 데이터를 전달할 때 전달받는 주체가 된다. 나머지 복제본은 follower 파티션이라고 부른다. leader + follower 파티션을 합쳐 ISR(In-Sync-Replication)이라고 부른다.

브로커 개수에 따라 Replication이 제한되는데 브로커 개수가 3이면 Replication은 4가 될 수 없다는 의미이다.

파티셔녀

프로듀서가 데이터를 보내면 무조건 파티셔너를 통해 브로커로 전송된다. 파티셔너는 데이터를 토픽의 어떤 파티션에 넣을지 결정한다.

동일한 메시지 키를 가진 데이터는 항상 동일한 파티션에 들어감을 보장한다. 동일한 파티션에 들어가게 되면 컨슈머 쪽에서 순서를 지켜서 데이터를 처리할 수 있다는 장점이 있다. 만약 메시지 키가 없다면 Round Robin 방식으로 파티션들에게 적절하게 분배된다.

컨슈머 Lag

파티션에 들어가는 모든 데이터는 offset이 있다.

프로듀서가 넣는 데이터 속도가 컨슈머가 데이터를 가져가는 속도보다 빠르다고 가정하자. 그럼 프로듀서가 넣은 offset과 컨슈머가 가져간 offset간 차이가 발생하는데 이게 컨슈머 lag이다.

lag은 각 파티션의 offset 기준으로 하기 때문에 파티션이 여러개라면 lag 또한 여러개가 존재할 수 있다.

카프카, 래빗앰큐, 레디스 차이

메시징 플랫폼은 크게 메시지 브로커, 이벤트 브로커로 나뉜다. 메시지 브로커는 메시지가 처리되면 즉시 or 빠르게 삭제되는 반면 이벤트 브로커는 원하는 시간만큼 이벤트를 보존한다.

이벤트 브로커는 한 번 발생한 이벤트를 브로커에 저장하여 단일 진실 공급원으로 사용할 수 있고, 장애가 발생했을 때 그 시점부터 재 처리가 가능하다. 또한 많은 실시간 데이터를 효과적으로 처리할 수 있는 장점이 있다.

래빗앰큐나 레디스는 메시지 브로커에 해당하며 카프카는 이벤트 브로커이다.

레퍼런스

인프런 데브원영님의 아파치 카프카 for beginners 강의

--

--