카프카 기본 개념

이재철·2022년 2월 26일
0

카프카

목록 보기
2/2

카프카 브로커, 클러스터, 주키퍼

카프카 브로커

카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션

  • 데이터 저장, 전송

    • 프로듀서로 부터 데이터를 전달받으면 카프카 브로커는 프로듀서가 요청한 토픽의 파티션에 데이터를 저장
    • 컨슈머가 데이터를 요청하면 파티션에 저장된 데이터를 전달
    • 카프카는 메모리나 데이터베이스에 저장하지 않으며 따로 캐시메모리를 구현하여 사용하지도 않는다.
    • 카프카는 페이지 캐시를 사용하여 디스크 입출력 속도를 높였음
    • 페이지 캐시란 OS에서 파일 입출력의 성능 향상을 위해 만들어 놓은 메모리 영역을 말한다.
    • 한번 읽은 내용은 메모리의 페이지 캐시 영역에 저장시킨다.
  • 데이터 복제, 싱크

    • 데이터 복제는 카프카를 장애 허용 시스템으로 동작하도록 하는 원동력
    • 파티션 단위로 이루어짐
    • 복제된 파티션은 리더와 팔로워로 구성
    • 프로듀서와 컨슈머에서 직접 통신하는 파티션은 리더, 나머지를 팔로워라 부름
    • 운영할때 2이상의 복제 개수를 정하는 것이 중요
  • 컨트롤러

    • 클러스터의 다수 브로커 중 한대가 컨트롤러 역할을 함
    • 다른 브로커들의 상태를 체크하고 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배함
    • 컨트롤러역할을 하는 브로커가 장애가 생기면 다른 브로커가 컨트롤러 역할을 수행함
  • 데이터 삭제

    • 다른 컨슈머가 데이터를 가져가더라도 삭제되지 않음
    • 컨슈머나 프로듀서가 데이터 삭제를 요청 할수 없음
    • 오직 브로커만이 데이터 삭제 가능
    • 삭제는 파일 단위로 이루어짐 = 이 단위를 로그 세그먼트라고 부름
  • 컨슈머 오프셋 저장

    • 컨슈머 그룹은 토픽이 특정 파티션으로부터 데이터를 가져가서 처리하고 이 파티션의 어느 레코드까지 가져갔는지 확인하기 위해 오프셋을 커밋함
  • 코디네이터

    • 클러스터의 다수 브로커 중 한대가 코디네이터 역할 수행
    • 컨슈머 그룹의 상태를 체크하고 파티션을 컨슈머와 매칭되도록 분배하는 역할을 함
    • 파티션을 컨슈머로 재할당하는 과정을 리밸런스라고 함

주키퍼

  • 카프카의 메타데이터를 관리하는데 사용
  • 카프카 클러스터로 묶인 브로커들은 동일한 경로의 주키퍼 경로로 선언해야 같은 카프카 브로커 묶음이 됨
  • 한개의 주키퍼에 다수의 카프카 클러스터를 연결해서 사용할 수 있음

토픽과 파티션

  • 토픽

    • 카프카에서 데이터를 구분하기 위해 사용하는 단위
    • 토픽은 1개 이상의 피티션을 소유
  • 파티션

    • 프로듀서가 보낸 데이터들이 들어가 저장되는데 이 데이터를 레코드라 부름
    • 카프카의 병렬처리의 핵심
    • 그룹으로 묶인 컨슈머들이 레코드를 병렬로 처리할 수있도록 매칭됨
    • 자료구조에서 접하는 큐와 비슷한 구조 FIFO
    • 다만 큐는 데이터를 가져가면 삭제되지만 카프카는 삭제되지 않는다.

레코드

  • 타임스탬프, 메시지 키, 메시지 값, 오프셋, 헤더로 구성
  • 메시지 카는 메시지 값을 순서대로 처리하거나 메시지 값의 종류를 나타내기 위해 사용
  • 메시지 키를 사용하면 프로듀서가 토픽에 레코드를 전송할 때 메시지 키의 해시값을 토대로 파티션을 지정하게 됨
  • 메시지 값에는 실질적으로 처리할 데이터가 들어있음
  • 오프셋은 0이상의 숫자로 이루어져 있으면 직접 지정할 수 없다
  • 헤더는 레코드의 추가적인 정보를 담는 메타데이터 저장소 용도로 사용
  • 헤더는 키/값 형태로 데이터를 추가하여 레코드의 속성을 저장하여 컨슈머에 참조할 수 있다.

0개의 댓글