[Kafka] 카프카 메시지 브로커

2023. 9. 17. 17:35·Infrastructure/Kafka
반응형

카프카 구조

Kafka Architecture

Zookeeper (주키퍼)

분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트로 직접 어플리케이션 작업을 조율하는 것을 쉽게 개발할 수 있도록 도와주는 도구이다. API를 이용해 동기화나 마스터 선출 등의 작업을 쉽게 구현할 수 있게 해준다.

Broker (브로커)

Kafka 서버를 의미하며 한개의 Cluster 내에 여러개의 Kafka 서버를 실행시킬 수 있다.

Topic (토픽)

메시지가 생산되고 소비되는 주체

Partition (파티션)

하나의 토픽내에서 토픽의 메시지가 분산되어서 각자 저장되는 단위
(위 카프카 아키텍쳐대로면 한개의 토픽에서 3개의 파티션으로 저장 관리되고 있다.)

파티션은 내부가 Queue로 구성이 되어있어서 순서를 보장하지만, Partition끼리의 순서를 보장하지 않는다.

파티션의 개수는 늘릴수는 있지만 줄일 수 는 없다. 

Segment (세그먼트)

파티션의 한 칸을 의미하는 것으로 생산되어 저장된 메세지. Key, Value, Timestamp, Header로 구성되어 있다.

Offset (오프셋)

Partition의 각 메세지를 식별할 수 있는 Unique 값.

 

Partition에서 Message가 생산 되는 구조

Produce

파티션은 Queue 구조로 되어 있는데 한개의 토픽에 여러개의 파티션이 있는 경우 메시지는 Round-Robin 방식으로 한개의 Partition으로 향하고 그중 마지막 Offset 뒤에 메시지를 기록 합니다.

Consumer Group

생산된 토픽에서 한개의 메시지를 가져와서 처리를 한다.

컨슈머 그룹은 각 파티션에 접근하는 Offset을 공유해서 고가용성을 확보 합니다.
컨슈머 1에서 Partition 1의 Offset 5를 처리하고 있다면 컨슈머2는 Pariton2 의 Offset 0을 처리하는 것 처럼.

따라서, Kafka를 구성할 때  Partition의 개수와 Consumer 개수를 조정하는 것이 중요하다.
이상적인 환경은 Partition 개수 : Consumer 개수 = 1 : 1 이다.
일반적으로는 Partition 개수 >= Consumer 개수.

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
'Infrastructure/Kafka' 카테고리의 다른 글
  • [Kafka] 카프카 컨슈머
  • [Kafka] 카프카 프로듀서
  • [Kafka] 카프카 에러 핸들링 패턴
  • [Kafka] Python confluent Kafka 설치 및 테스트
상쾌한기분
상쾌한기분
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
  • 전체
    오늘
    어제
    • 분류 전체보기 (250)
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (5)
        • Spring (2)
        • 프로젝트 (1)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (2)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (25)
        • AI (9)
        • Langchain (8)
        • Web (18)
        • Git (8)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    http
    파이썬
    LLM
    MYSQL
    Kafka
    Redis
    ollama
    performance
    Langchain
    go
    git
    티스토리챌린지
    docker
    fluentd
    Golang
    오블완
    python
    백준
    prompt
    CDC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
[Kafka] 카프카 메시지 브로커
상단으로

티스토리툴바