카프카 기본 개념

jy.YOON·2023년 6월 2일

카프카

목록 보기
3/5
post-thumbnail

카프카 기본 개념

  • 카프카 브로커
    • 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체



  • 카프카의 데이터 복제 및 싱크
    • 카프카의 데이터 복제는 파티션 단위로 이루어진다.
    • 복제 개수의 기본 값은 브로커 옵션의 기본값인 1 이다.
    • 프로듀서/컨슈머와 직접통신하는 파티션을 리더, 나머지 복제 데이터를 가지고 있는 파티션을 팔로워라 부른다.
    • 복제를 통해 데이터를 안전하게 사용할 수 있다는 강력한 장점 때문에, 카프카 운영시 2 이상의 복제 개수를 정하는것이 좋다.(데이터 처리속도가 중요하다면 1 또는 2, 정보 유실이 일어나면 안되면 3)



  • 컨트롤러

    • 클러스터의 다수의 브로커 중 한 대가 컨트롤러의 역할을 한다.
    • 컨트롤러는 다른 브로커들의 상태 체크하고, 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배한다.
    • 컨트롤러 역할을 하는 브로커에 장애 발생시, 다른 브로커가 컨트롤러 역할을 한다.



  • 데이터 삭제
    • 다른 메시징 플랫폼과 다르게 컨슈머가 메시지를 가져가더라도 토픽의 데이터는 사라지지 않는다.
    • 컨슈머나 프로듀서는 데이터 삭제를 요청할 수 없다.
    • 오직 브로커만이 데이터를 삭제할 수 있다.
    • 로그 세그먼트(다수의 데이터) 로 저장되기 때문에 특정 데이터를 선별해서 삭제할 수 없다.



  • 컨슈머 오프셋 저장
    • 특정 파티션으로 부터 데이터를 가져가서 처리하고 이 파티션의 어느 레코드까지 가져갔는지 확인하기 위해 오프셋을 커밋한다.



  • 코디네이터
    • 클러스터의 다수 브로커 중 한 대는 코디네이터의 역할을 수행한다.
    • 코디네이터는 컨슈머 그룹의 상태를 체크하고, 파티션을 컨슈머와 매칭되도록 분배하는 역할을 한다.
    • 컨슈머가 컨슈머 그룹에서 제외되면, 매칭되지 않은 파티션을 정상동작하는 컨슈머로 재할당하여 끊임없이 데이터가 처리되도록 도와준다.(리밸런스)









  • 주키퍼의 역할?
    • 카프카의 메타데이터를 관리하는데 사용한다.



  • 토픽과 파티션

    • 토픽은 카프카에서 데이터를 구분하기 위해 사용하는 단위

    • 토픽은 1개 이상의 파티션을 소유

    • 파티션에는 프로듀서가 보낸 데이터들이 들어가 저장되는데 이 데이터를 레코드라고 부른다.

    • 파티션

      • 카프카 병렬처리의 핵심
      • 컨슈머 처리량이 한정된 상황에서 많은 레코드를 병렬로 처리하는 가장 좋은 방법은 컨슈머의 개수 늘림과 동시에 파티션의 개수도 늘리면 처리량이 증가하는 효과를 볼 수 있음
      • 큐와 비슷한 구조(FIFO), 일반적인 큐는 데이터를 가져가면 레코드를 삭제하지만 카프카에서는 삭제하지 않는다.
    • 카프카는 토픽 이름 변경을 지원하지 않으므로 이름 변경하기 위해서는 삭제 후 다시 생성하는 것 외에는 방법이 없다.



  • 레코드
    • 타임스탬프, 메시지 키, 메시지 값, 오프셋 헤더로 구성
    • 브로커에 한번 적재된 레코드는 수정할 수 없고 로그 리텐션 기간 또는 용량에 따라서만 삭제된다.
    • 타임스탬프
      • 컨슈머는 레코드의 타임스탬프를 토대로 레코드가 언제 생성되었는지 알 수 있음
      • 타임스탬프는 프로듀서에 해당 레코드가 생성된 시점의 유닉스 타임이 설정된다.(임의로 설정 가능)
    • 메시지 키
      • 메시지 값을 순서대로 처리하거나 메시지 값의 종류를 나타내기 위해 사용
      • 메시지 키 사용시, 프로듀서가 토픽에 레코드를 전송할 때 메시지 키의 해시값을 토대로 파티션을 지정(동일 메시지키는 동일 파티션으로 들어간다, 다만 어느 파티션에 지정되는지 알 수 없음)
      • 파티션 개수 변경시 메시지 키와 파티션 매칭이 달라지게 되므로 주의
    • 메시지 값
      • 실질적으로 처리할 데이터
      • 메시지 키,값은 직렬화되어 브로커로 전송, 컨슈머가 이용시엔 직렬화한 형태를 다시 역직렬화해야한다.
    • 헤더
      • 레코드의 추가적인 정보를 담는 메타데이터 저장소 용도로 사용
profile
5 Seconds rule

0개의 댓글