[Kafka] Apache Kafka 개념

2sky·2023년 6월 28일

kafka

목록 보기
1/5

기본 개념 및 생태계

Before KafkaAfter Kafka
엔드투엔드 연결 방식의 아키텍쳐프로듀서/컨슈머 분리
데이터 연동의 복잡성 증가메시지 데이터를 여러 컨슈머에게 허용
각기 다른 데이터 파이프라인 연결구조높은 처리량을 위한 메시지 최적화
확장에 엄청난 노력 필요스케일 아웃 가능
  • broker

    • 실행된 카프카 애플리케션 서버 중 1대
    • 3대 이상의 브로커로 클러스터 구성
    • 주키퍼와 연동(주키퍼는 메타데이터를 저장)
    • n개 브로커 중 1대는 컨트롤러 기능 수행(컨트롤러 : 각 브로커에게 담당 파티션 할당 수행, 브로커 정상 동작 모니터링 관리, 누가 컨트롤러 인지는 주키퍼에 저장)
  • Record

    • 객체를 프로듀서에게 컨슈머로 전달하기 위해 kafka 내부에 byte형태로 저장할 수 있도록 직렬화/역직렬화하여 사용
    • 기본 제공 직렬화 class : StringSerializer, ShortSerializer 등
    • 커스텀 직렬화 class를 통해 Custom Object 직렬화/역직렬화 가능
  • Topic & Partition

    • 메시지 분류 단위
    • n개의 파티션 할당 가능
    • 각 파티션마다 고유한 오프셋을 가짐
    • 메시지 처리순서는 파티션 별로 유지 관리
  • Producer & Consumer

    • 프로듀서는 레코드를 생성하여 브로커로 전송
    • 전송된 레코드는 파티션에 신규 오프셋과 함께 기록됨
    • 컨슈머는 브로커로부터 레코드를 요청하여 가져감 (polling)
  • 컨슈머는 파티션 개수보다 적거나 같게 만들어야 함! (파티션 개수 ≥ 컨슈머 개수)

  • 리밸런스

    • 한개가 장애가 난 경우에 대한 대비 가능
    • 컨슈머 3대 중 1대에 장애가 발생했을 때 할당 재조정
    • 나머지 컨슈머가 파티션으로부터 polling 수행
  • 2개 이상의 컨슈머 그룹이 있는 경우

    • 목적에 따른 컨슈머 그룹을 분리할 수 있음
    • 장애에 대응하기 위해 재입수(또는 재처리) 목적으로 임시 신규 컨슈머 그룹을 생성하여 사용하기도 함
    • 애플리케이션 로그 적재용 컨슈머 그룹이 2개일때 예시
      • 엘라스틱 서치 : 로그, 실시간 확인용, 시간순으로 정렬
      • 하둡 : 대용량 데이터 적재, 이전 데이터 확인
      • 컨슈머 그룹간 간섭을 줄임
      • 하둡에 이슈가 발생하여 컨슈머의 적재지연이 발생하더라도 엘라스틱서치에 적재하는 컨슈머의 동작에는 이슈가 없음
  • replication

    • broker의 장애가 발생하였을 때 partition을 다른 broker에 복제하여 장애에 대응
      • 1번 broker에 이슈가 생기면 다른 broker에 복제된 데이터를 사용
    • 고가용성을 위해 파티션 복제기능으로 데이터 유실 방지
    • 리더 파티션 : kafka클라이언트와 데이터를 주고 받는 역할
    • 팔로워 파티션 : 리더 파티션으로부터 레코드를 지속 복제(시간이 걸림). 리더 파티션의 동작이 불가능할 경우 나머지 팔로워 중 1개가 리더로 선출
      • 특정 파티션의 리더, 팔로워 레코드가 모두 복제되어 sync가 맞는 상태(In-Sync Replica)
  • kafka rack-awareness

    • 1개의 rack에 다수의 브로커를 몰아 넣는 것은 위험
    • 다수의 rack에 분산하여 브로커 옵션 설정
  • 핵심요소

    • broker : 카프카 애플리케이션 서버 단위

    • topic : 데이터 분리 단위, 다수 파티션 보유

    • partition : 레코드를 담고 있음, 컨슈머 요청시 레코드 전달

    • offset : 각 레코드당 파티션에 할당된 고유 번호

    • consumer : 레코드를 polling하는 애플리케이션

      • consumer group : 다수 컨슈머 묶음
      • consumer offset : 특정 컨슈머가 가져간 레코드의 번호
    • producer : 레코드를 브로커로 전송하는 애플리케이션

    • Replication : 파티션 복제 기능

      • ISR : 리더 + 팔로워 파티션의 sync가 된 묶음
    • Rack-awareness : server rack이슈에 대응

      https://www.youtube.com/watch?v=catN_YhV6To 참고
profile
하늘하늘한 하늘

0개의 댓글