카프카 기본개념1

Subin Park·2023년 3월 26일
0

Kafka

목록 보기
1/4

카프카란?

실시간으로 대용량 테이터를 게시, 구독, 저장 및 처리할 수 있는 분산 이벤트 스트리밍 플랫폼

카프카 구성요소

[카프카 클러스터]

브로커(Broker)

  • 카프카 서버를 의미
  • 클러스터 내에 여러개의 브로커가 구성될 수 있다
  • 브로커 내부에 여러 토픽들이 생성될 수 있고 이러한 토픽들에 의해 생성된 파티션들이 보관하는 데이터에 대해 분산 저장을 하거나 장애 발생 시, 안전하게 데이터를 사용할 수 있도록 관리하는 역할을 한다

컨트롤러(Controller) : 클러스터 내의 브로커가 장애 발생으로 인하여 작동하지 않는 경우 해당 브로커에 존재하는 리더 파티션을 재분배 한다

  • 클러스터의 다수 브로커 중 한 대가 컨트롤러의 역할을 맡음
  • 만약 컨트롤러 역할을 하는 브로커에 장애가 발생 시 다른 브로커가 컨트롤러 역할을 한다

코디네이터(Coordinator) : 컨슈머 그룹의 상태를 체크하고 파티션을 컨슈머와 매칭되도록 분배하는 역할을 한다

  • 클러스터의 다수 브로커 중 한 대가 코디네이터의 역할을 맡음
  • 컨슈머 그룹 내의 컨슈머에 장애 발생 확인 시 해당 컨슈머에 매칭 된 파티션을 다른 정상 컨슈머에 매칭해주는 역할을 한다
  • 파티션을 컨슈머에게 재할당하는 과정을 리밸런스(Rebalance)라고 한다


[카프카 클라이언트]

프로듀서(Producer)

카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 전송하는 역할. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신을 한다

컨슈머(Consumer)

적재된 데이터를 사용하기 위해 브로커로부터 데이터를 가져와 필요한 처리를 하는 역할

컨슈머 그룹(Consumer Group) : 카프카 컨슈머는 하나 이상의 컨슈머가 컨슈머 그룹을 구성하여 하나의 토픽을 구독할 수 있다

  • ex) 브로커 내에 A, B, C 파티션이 존재할 시 그룹 내 컨슈머1은 A 파티션을, 컨슈머2가 B, C 파티션을 구독하고 있는 형태
  • 브로커는 성능을 위해 하나의 토픽을 여러 파티션으로 병렬 구성하여 처리하기 때문에 둘 이상의 파티션을 하나의 컨슈머로 처리한다면 성능 상의 문제가 발생할 수 있어 그룹으로 구성하여 사용
  • 컨슈머 그룹 내의 1개의 컨슈머는 여러개의 파티션에 할당될 수 있으므로 컨슈머의 개수는 가져가고자하는 토픽의 파티션 개수보다 같거나 작아야 함
  • 컨슈머 그룹에 장애 등의 이유로 인해 컨슈머가 추가되거나 이탈하는 것과 같은 상태가 변경될 시 그룹 내부에서 파티션의 소유권이 재조정 됨(Rebalancing)


주키퍼(Zookeeper)

분산 애플리케이션을 위한 코디네이션 시스템이다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 시스템 간의 정보 공유, 상태 체크, 서버들 간의 동기화를 위한 락 등을 처리해주는 서비스이다

  • 카프카에서는 메타데이터를 저장하기 위해서 사용된다.
  • 최신 버전에서는 주키퍼가 제거될 예정이다
    • 외부에 메타데이터를 저장하면 컨트롤러의 in-memory 상태가 외부 상태로부터 비동기화될 수 있음
    • 두 개의 시스템을 사용한다는 것은 많은 복제를 야기하였다
    • 메타데이터를 외부에 저장함으로 인한 카프카의 확정성 제한

0개의 댓글