Development

카프카 구성 요소

Prower 2024. 4. 19. 22:02
728x90
반응형

전체 구조

  • 거대한 양의 데이터 처리가 가능한 분산 스트리밍 플랫폼
    • 높은 스루풋, 확장성, 장애 내성 제공
    • 데이터를 실시간으로 처리, 저장 하도록 하는 플랫폼
  • 저장소가 아니다. 메세지 플랫폼
  • producer(sender, publisher): 메세지를 카프카에 기록하는 역할
  • consumer(receiver, subscriber): 카프카로부터 메세지를 소비하는 역할
  • broker: 데이터 저장, 관리, 중개 역할

이벤트

  • kafka에서 데이터로 취급 되는 것
  • event = record = message
  • kafka에 기록되는 모든 데이터는 다음의 메세지 형식을 따른다
    • key
    • value
    • timestamp
    • (optional) metadata header
  • 이벤트는 소비되지 않는다. 읽음 행위로 인해 삭제되지 않음
    • 토픽당 이벤트를 어느 기간 만큼, 유지할건지 설정 가능
  • 토픽에 데이터가 기록되면 토픽의 파티션중 하나에 이벤트가 이어 붙여짐
  • 한 이벤트와 동일한 이벤트 키를 가진 이벤트는 같은 파티션에 기록됨
  • 카프카는 모든 consumer가 해당 파티션의 기록된 순서대로 읽는 것을 보장함

토픽

  • 연관된 이벤트가 저장된 집합
  • 파일 시스템의 폴더와 유사한 역할

파티션

  • 토픽은 분산되어 있다
    • 분산? 토픽이 다른 카프카 브로커에 퍼져있다는 의미
    • scalability를 유지하는데 핵심적인 컨셉
      • 토픽의 데이터가 브로커에 퍼져있기 때문에 다수의 클라이언트가 다수의 브로커에 동시에 읽기/쓰기가 가능
  • 각 파티션은 순서가있는 레코드들의 집합

Producer

  • sender, publisher
  • 카프카의 토픽에 데이터를 기록하는 역할
  • 동기, 비동기 방식으로 append-only로 데이터를 기록한다

Consumer

  • 카프카에 기록된 데이터를 읽는 역할
  • 카프카의 토픽을 구독(publish) 하고 있다가, 해당 토픽의 데이터를 받는다.
  • 데이터는 스트리밍 방식으로 읽어 처리한다.

producer와 consumer는 서로 의존하지 않는다. 즉, producer, consumer가 하는 일이 서로에 엮여 있지 않음

Broker

  • producer와 consumer 사이에서 데이터를 저장, 관리하는 중개 역할
  • 카프카 클러스터는 다수의 broker로 구성되어 있다
  • 카프카의 장애 내성, 데이터 복제, 고가용성 제공

Offset

  • 각 파티션의 레코드에 부여된 유일한 식별자
  • 카프카 토픽에서 해당 레코드의 위치를 표현
  • offset은 consumer에 장애가 발생한 경우 데이터를 이어서 읽을 수 있도록 포인트 역할

Replication

  • 카프카는 고가용성을 위해 토픽의 파티션을 다수의 broker에 복제한다
  • 하나의 borker가 다운되더라도 해당 broker의 복제본을 갖고 있는 broker에서 역할 수행 가능

https://www.linkedin.com/pulse/kafka-key-concepts-ecosystem-use-case-syed-ashfaq-hussain/?trackingId=PHo9WQF3T9OIqXegWZDLng%3D%3D

https://kafka.apache.org/intro

 

728x90
반응형