ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kafka 배경 및 용어정리
    개발/Kafka 2022. 5. 1. 14:59

    카프카 배경

    • 데이터 파이프라인의 파편화를 개선
    • 한 곳에 모아 처리할 수 있도록 중앙집중화
      • 데이터 스트림을 한 곳에서 실시간 관리
      • 실시간 스트림 소비
    • 소스 애플리케이션과 타킷 애플리케이션 사이의 의존도를 최소화
    • 큐 자료구조와 비슷하나 소비되고 삭제되지 않음
    • 상용에서는 최소 3대이상의 서버(브로커)에서 분산 운영
      • 지속적 복제
      • 낮은 지연과 높은 데이터 처리량
    • 엄청난 양의 데이터를 안전하고 빠르게 처리

    특징

    • 높은 처리량
      • 묶음 단위 처리
      • 병렬 처리
    • 확장성
      • 안정적 확장 가능
    • 영속성
      • 파일 시스템에 저장
      • 페이지 캐시 영역을 메모리와 따로 생성하여 사용 → 메모리 크기의 의존성이 줄어듦, 파일 입출력 속도 줄어듦
    • 고가용성
      • replication

     

    카프카 용어

    • 브로커
      • 9092
      • 클라이언트와 데이터를 주고받기 위해 사용하는 주체
      • 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행
      • 데이터 안정성을 위해서는 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영
      • 컨트롤러 역할
        • 다른 브로커들의 상태 체크, 리더 파티션을 재분배
      • 데이터 삭제
        • 브로커만이 데이터 삭제 가능, 파일 단위로 삭제(로그 세그먼트), 특정 데이터를 선별해서 삭제 불가
      • 컨슈머 오프셋 저장
        • 어느 레코드까지 가져갔는지 확인을 위해 오프셋 커밋
      • 코디네이터
        • 컨슈머 그룹 상태체크, 파티션을 컨슈머와 매칭되도록 분배
        • 리밸런스: 파티션을 컨슈머로 재할당하는 과정
    • 주키퍼
      • 2181
      • 분산 코디네이션 서비스를 제공하는 오픈소스
      • 카프카의 클러스터 설정 리더 정보, 컨트롤러 정보를 포함
      • 카프카의 메타데이터를 관리
    • 토픽
      • 데이터를 구분하는 가장 기본적인 개념
      • DB에서 테이블과 유사
      • 파티션이 존재, 최소 1개 이상
      • 데이터를 구분하기 위해 사용하는 단위
      • 1개 이상의 파티션을 소유
      • 카프카는 토픽이름 변경을 지원하지 않음
    • 파티션
      • 큐 구조와 비슷, FIFO, 하지만 데이터를 가져가도 삭제하지 않음. 컨슈머 그룹이 토픽의 데이터를 여러번 가져갈 수 있음
      • 데이터 복제는 파티션 단위 → 최솟값: 1(복제없음), 최댓값: 브로커 개수
      • replication: 팔로워 파티션들은 리더 파티션의 오프셋을 확인하여 차이나는 경우 데이터를 가져옴
      • 리더가 다운되면 팔로워중 하나가 리더가 됨
      • 병렬처리의 핵심
    • 레코드(record)
      • 토픽에 넣는 데이터
      • key, value
      • 타임스탬프, 메시지키, 메시지값, 오프셋, 헤더 로 구성
      • 브로커에 적재된 레코드는 수정 불가
      • 메시지 키의 해시값을 토대로 파티션을 지정(동일한 메시지는 동일 파티션으로!) → 하지만 파티션의 갯수가 변경되면 매칭이 달라짐
      • 메시지 키, 메시지 값은 직렬화되어 브로커로 전송 → 컨슈머가 사용할 때는 직렬화한 방식과 동일한 형태로 역직렬화를 해야함!
      • 헤더는 레코드의 추가적인 정보를 담는 메타데이터 저장소 용도로 사용
    • 커밋
      • 컨슈머가 특정 레코드까지 처리를 완료했다고 레코드의 오프셋 번호를 카프카 브로커에 저장하는 것

     

    참고

    - [책] 아파치 카프카 애플리케이션 프로그래밍 with 자바

    '개발 > Kafka' 카테고리의 다른 글

    kafka streams  (0) 2022.05.01

    댓글

Designed by Tistory.