ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카프카 기본 개념
    카테고리 없음 2024. 1. 16. 22:11

    [ 목차 ]

      토픽과 파티션 

      토픽이름은 데이터의 얼굴이다. 

      카프카 클러스터의 브로커에서 데이터를 관리할 때 기준이 된다.

      리더 파티션, 팔로워 파티션으로 구성될 수 있다.

      토픽의 네이밍은 아래와 같이 역할을 쉽게 이해할 수 있도록 하는 것이 좋다.

      1. 환경.팀-명.애프리케이션-명.메세지-타입  ex) prd.marketing-team.sms-platform.json

      2. 프로젝트-명.서비스명.환경.이벤트명  ex) commerce.payment.prd.notification

      3. 환경.서비스명.jira번호.메세지타입   ex) dev.email-sender.jira-123.email-vo-custom

      4. 카프카클러스터명.환경.서비스명.메세지타입

       

      프로듀서 

      데이터를 발행한다.

      bootstrap.servers 에 프로듀서가 데이터를 전송할 브로커의 host:port 를 설정한다.

       

      브로커와 클러스터 

      브로커는 카프카 서버이다.

      브로커 내에 여러 토픽이 있을 수 있고, 토픽에 있는 파티션이 보관하는 데이터를 분산 저장할 수 있다.

      퍼블리셔는 브로커에 데이터를 전송하고, 클라이언트는 브로커의 토픽의 파티션에서 데이터를 읽는다.

      브로커 서버는 보통 3대를 둔다. 

      브로커 서버 여러대는 하나의 클러스터로 묶어 동작할 수 있다.

       

      리더 파티션 

      producer 로부터 전달된 데이터를 보관하는 역할

      프로듀서 또는 컨슈머와 직접 통신하며 쓰기/읽기 담당

       

      팔로워 파티션

      리더 파티션의 데이터를 복제해 보관하는 역할 

      리더 파티션에 장애가 발생하면, 팔로워 파티션이 리더 파티션으로 승격할 수 있다.

       

      레코드 

      타임스탬프, 메세지 키, 메세지 값, 오프셋으로 구성된다.

      메세지 키의 해시 값을 토대로 파티션이 지정됨. 동일한 메세지 키는 동일 파티션으로,

      파티션 수가 변경되면 키와 파티션 매칭이 달라져 주의 필요.

      메시지 키를 사용하지 않으면 null 로 설정되어 producer 기본 설정 파티셔너에 따라 파티션에 분배된다.

       

      복제

      replication factor 는 복제 개수를 의미한다. 브로커 수만큼 복제할 수 있다.

      데이터 종류마다 혹은 토픽마다 복제 수를 다르게 구성할 수 있다.

      속도가 중요하고 데이터가 유실되어도 괜찮다면 1~2로 설정한다. 

       

      예를 들어, 1이면 복제하지 않는다는 의미이다.  브로커 A의 파티션을 브로커 B에서 복제하지 않는다. 

      브로커 A에 리더 파티션만 존재한다. 브로커 A의 토픽의 파티션이 3개라면, 3개 모두 리더 파티션이다.

      혹은 3이라면 A브로커의 파티션을 복제한B, C 브로커의 파티션이 존재한다, A,B,C 는 각각 하나의 리더와 두 개의 팔로워를 갖는다.

       

      주키퍼

      주키퍼는 카프카 클러스터의 메타 데이터를 갖고 있다.

       

      컨슈머

      메세지 소비하는 역할

       

      컨트롤러 

      클러스터의 여러 브로커 중 하나의 브로커가 컨트롤러의 역할을 한다.

      컨트롤러는 클러스터 내의 브로커가 장애 발생으로 사용할 수 없는 경우, 

      장애가 발생한 브로커의 토픽에 있는 리더 파티션을 클러스터 내의 정상 동작하는 다른 브로커에게 토픽의 리더 파티션 지위를 재분배하는 역할을 한다. 

      컨트롤러 역할을 하는 브로커에게 장애가 발생하면 다른 브로커가 컨트롤러의 역할을 한다. 

       

      코디네이터 

      여러 브로커 중 하나의 브로커가 코디네이터의 역할을 하게 된다. 

      코디네이터는 컨슈머 그룹의 상태를 체크해 컨슈머 그룹 내의 컨슈머가 장애가 발생해 매칭된 파티션의 데이터를 소비할 수 없는 경우, 

      장애가 발생한 컨슈머에게 매칭된 파티션을 정상 동작하는 다른 컨슈머에게 매칭해준다.

      파티션을 컨슈머에게 재할당하는 과정을 리밸런스라고 한다.

       

      log.dir 

      데이터가 저장되는 장소

       

       

      카프카 클라이언트 라이브러리

      카프카 Producer, Consumer, Admin Client 를 제공하는 카프카 클라이언트를 사용해 애플리케이션을 개발한다.

       

      프로듀서 API

      leader partition 이 있는 카프카 브로커와 직접 통신한다.

       

      카프카 스트림즈 

      토픽에 저장된 data 의 실시간 변환과 다른 토픽에 저장이 가능하다.

      kafka 와 버전에 대해 완벽한 호환성을 가진다.

      장애허용시스템 

      분산, 스케줄링에 별도의 프로그램이 필요없다.

      JVM 위에 하나의 process 로 동작한다.

      producer 와 consumer 를 합친 것이다.

      소스 토픽(read), 싱크 토픽(save) 의 클러스터가 다를 경우에는 스트림즈를 지원하지 않는다. 

      이런 경우 프로듀서과 컨슈머를 각각 구현해 조합해 사용한다.

      task 는 데이터 처리 최소 단위이다. 파티션의 수만큼 생성된다. 컨슈머 스레드와 비슷하다. 

      병렬처리를 위해서는 파티션 수와 스트림즈 스레드 수를 늘린다.

      반응형
    Designed by Tistory.