KAFKA )1

김성훈·2022년 6월 13일
0

KAFKA

목록 보기
1/3
post-thumbnail

카프카

분산 이벤트 스트리밍 플랫폼

스트리밍을 처리하기 위한 플랫폼 (고성능)
https://kafka.apache.org

카프카를 사용하기 위해서는 크게 4가지 구성요소가 필요하다.

  1. 카프카 클러스터 (메시지(이벤트) 저장)
  • 하나의 카프카 클러스터는 여러개의 브로커로 구성이 된다. (브로커 = 각각의 서버)
  1. 주키퍼 클러스터
  • 카프카 클러스터를 관리한다.
  • 주키퍼에 카프카 클러스터에 관한 정보들이 등록이 된다.
  1. 프로듀서 (producer)
  • 카프카 클러스터에 메세지를 보낸다.
  1. 컨슈머 (consumer)
  • 카프카 클러스터에서 메세지를 읽어온다.

카프카 클러스터는 데이터 이동을 위한 핵심 역할을 맡는다.

토픽과 파티션, 오프셋

  1. 토픽
  • 메세지를 구분하는 용도로 사용한다. (예> 뉴스용 토픽, 주문용 토픽)

  • 파일시스템의 폴더와 유사함

  • 한 개의 토픽은 한 개 이상의 파티션으로 구성됨

  1. 파티션 (append-only)
  • 메세지를 저장하는 물리적인 파일
  • 파티션에 저장된 메세지는 삭제되지 않는다.(파일이기 때문에 남아 있음)
  1. 오프셋 (offeset)
  • 각각의 메세지가 저장되는 위치를 오프셋(offset) 이라고 한다
  • 프로듀서가 메세지를 카프카에 저장을 하면 저장된 메세지 들은 차례대로 offset1, offset2 이런식으로 값을 갖게됨
  • 프로듀서가 넣은 메세지는 파티션의 맨 뒤에 추가됨
  • 컨슈머는 오프셋 기준으로 메세지를 순서대로 읽음

프로듀서와 컨슈머는 토픽을 기준으로 메세지를 주고 받는다.

여러 파티션과 프로듀서

프로듀서는 라운드로빈 또는 키로 파티션 선택

  • 같은 키를 갖는 메시지는 같은 파티션에 저장 - > 같은 키는 순서 유지

여러 파티션과 컨슈머

컨슈머는 컨슈머그룹에 속한다.

한 개 파티션은 컨슈머 그룹의 한 개 컨슈머만 연결 가능

  • 즉 컨슈머 그룹에 속한 컨슈머들은 한 파티션을 공유할 수 없음
  • 한 컨슈머그룹 기준으로 파티션의 메세지는 순서대로 처리

장점

  1. 파티션 파일에 대해서 OS 제공하는 페이지캐시를 사용
  • 파티션에 대한 파일 IO 가 실제로 메모리에서 처리 되기 때문에 그만큼 IO 속도가 빨라짐
  1. Zero Copy
  • 디스크 버퍼에서 네트워크 버퍼로 직접 데이터 복사

  • 디스크에서 데이터를 읽어다가 네트워크로 보내는 속도가 뻘리짐

  1. 컨슈머 추적을 위해 브로커가 하는 일이 별로 없음
  • 카프카 브로커는 메세지 필터, 메세지 재전송과 같은 일을 하지 않음 (프로듀서 컨슈머가 직접 함)

  • 브로커는 컨슈머와 파티션 간 매핑 관리

  1. 묶어서 보내기, 묶어서 받기 (batch)

  • 프로듀서 : 일정 크기만큼 메세지를 모아서 전송 가능

  • 컨슈머 : 최소 크기만큼 메시지를 모아서 조회 가능

낱개 처리보다 처리량이 증가한다.

  1. 처리량 증대(확장)가 쉬움
  • 1개 장비의 용량 한계 - > 브로커 추가, 파티션 추가
  • 컨슈머가 느리면 - > 컨슈머 추가 (+ 파티션 추가)

수평 확장이 용이한 구조를 가지고 있다.

  1. 리플리카 -복제-
  • 리플리카 : 파티션의 복제본

  • 복제수 (replication factor) 만큼 파티션의 복제본이 각 브로커에 생김

  • 토픽을 생성할 때 복제수를 2로 설정하면 동일한 데이터를 가지고 있는 파티션이 서로 다른 브로커에 2개가 생김

  • 리더와 팔로워로 구성

  • 프로듀서와 컨슈머는 리더를 통해서만 메세지를 처리함

  • 팔로워는 리더로부터 데이터를 읽어서와서 저장함 (복제)

  • 리더가 속한 브로커에 장애가 발생하면 다른 팔로워가 리더가 됨

핵심 정리

성능 (높은 처리량)

  • os 페이지캐시
  • (다른 메시지 시스템 대비) 단순한 브로커
  • 묶어서 데이터 전송
  • 파티션/컨슈머 추가로 수평 확장

고가용성

  • 파티션 리플리케이션 + 리더/팔로워 구조

출처

kafka 조금 아는 척하기 1 (개발자용)

https://www.youtube.com/watch?v=0Ssx7jJJADI

profile
"한 명이 걷는 천 걸음 보다 천 명이 함께 걷는 한 걸음이 성공의 시작이고 완성이다"

0개의 댓글