카프카란

salgu·2022년 9월 12일
0

Kafka

목록 보기
1/2
post-thumbnail
post-custom-banner

카프카의 사전 정의


분산 이벤트 스트리밍 플랫폼입니다.

기본 구조


여러개의 브로커는 데이터를 이중화 하거나 리더와 팔로워 구조를 이루며
카프카 클러스터에서 관리됩니다.

토픽과 파티션


토픽

  • 토픽은 메세지를 구분하는 단위입니다.
  • 한 개의 토픽은 한 개 이상의 파티션으로 구성되어 있습니다.

파티션

  • 파티션은 메세지를 저장하는 물리적인 파일을 칭합니다.
  • 추가만 가능한 (append-only) 파일입니다.
  • 각 메세지의 저장되는 위치를 offset 이라고 합니다.
  • 프로듀서가 넣은 메세지는 파티션의 맨 뒤에 추가됩니다.
  • 컨슈머는 offset 기준으로 메세지를 순서대로 읽습니다.
  • 파티션에 저장되어 있는 메세지는 삭제되지 않고 설정에 따라 일정 시간이 지난 뒤 삭제됩니다.

프로듀서와 여러 파티션


  • 프로듀서는 라운도 로빈 방식 또는 key로 파티션을 선택합니다.
  • 같은 key를 갖는 메세지는 같은 파티션에 저장됩니다.
    • 같은 key는 순서가 유지됩니다.

여러 파티션과 컨슈머


  • 컨슈머는 컨슈머 그룹에 속합니다.
  • 한 개의 파티션은 컨슈머 그룹의 한 개의 컨슈머만 연결이 가능합니다.
    • 컨슈머 그룹에 속한 컨슈머들은 한 파티션을 공유할 수 없습니다.
    • 한 컨슈머 그룹 기준으로 파티션의 메세지는 순서대로 처리됩니다.
  • 브로커0의 topic1 - p0에 컨슈머 그룹 A에서 컨슈머1과 컨슈머2가 같이 연결이 될 수 없습니다.
    • 파티션의 메세지가 순서대로 처리되는것을 보장할 수 있게 됩니다.

카프카의 성능이 좋은 이유


  • 파티션 파일은 OS 페이지 캐시를 사용합니다.
  • Zero Copy를 사용하여 전송 속도가 빠릅니다.
  • 컨슈머 추적을 위해 브로커가 하는 일이 비교적으로 단순합니다.
    • 메세지 필터, 메세지 재전송 등의 일은 브로커가 하지 않습니다.
      • 프로듀서, 컨슈머가 직접해야 합니다.
  • 묶어서 보내기, 묶어서 받기 (batch 처리)
    • 프로듀서는 일정 크기만큼 메세지를 모아서 전송이 가능합니다.
    • 컨슈머는 최소 크기만큼 메세지를 모아서 조회가 가능합니다.

확장성


  • 확장이 쉽습니다.
    • 1개 장비의 용량 한계 -> 브로커 추가, 파티션 추가
    • 컨슈머가 느림 -> 컨슈머 추가, 파티션 추가

replication


  • 레플리카란 파티션의 복제본을 말합니다.
    • 복제된 수 만큼 파티션의 복제본이 각 브로커에 생깁니다.
  • 리더와 팔로워로 구성
    • 프로듀서와 컨슈머는 리더를 통해서만 메세지를 처리합니다.
    • 팔로워는 리더로부터 복제되어 이중화가 되어 있습니다.
    • 리더가 속한 브로커가 장애시 이중화 되어있던 팔로워가 리더가 됩니다





reference :

  • 최범균님 - kafka 조금 아는척하기 1 (개발자용)
profile
https://github.com/leeeesanggyu, leeeesanggyu@gmail.com
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 9월 13일

우왕 ...

답글 달기