[KAFKA #1] Apche Kafka?

SmiteFLame·2023년 1월 22일
0

Kafka

목록 보기
1/1

Apache Kafka: 오픈 소스 분산 이벤트 스트리밍 플랫폼

오픈 소스 분산 이벤트 스트리밍 플랫폼(distributed event streaming platform)

  1. 이벤트 스트림을 지속적으로 발행(publish-write), 구독(subscribe-read)
  2. 이벤트 스트림을 원하는 만큼 내구성 있고 안정적으로 저장(store). KafkaCluster(broker)
  3. 이벤트 스트림을 발생 시 또는 소급하여 처리(Process).

Kafka 특징

Kafka를 사용하는 이유

고성능

  • 여러 개의 Producer 및 Consumer가 독립적으로 메시지 처리
  • 디스크 기반의 이벤트 보존
    • 지속해서 보존 가능
    • Consumer가 장애로 Restart 되더라도 누적된 메시지 처리가능
  • Broker 단순한 업무
    • Broker 기능은 Consumer와 Partition이라는 Mapping만 진행
    • 메시지 필터, 메시지 재전송과 같은 일은 Procducer, Consumer 위임
  • 확장성(scale out) : Broker, Partition, Consumer 증가로 수평 확장이 쉽게 가능

고가용성

Kafka의 Topic은 Partition이라는 단위로 쪼개어져 클러스터의 각 서버들에 분산되어 저장
고가용성을 위하여 복제(replication) 설정을 할 경우 이 또한 partition 단위로 각 서버들에 분산되어 복제되고 장애가 발생하면 Partition 단위로 Fail Over가 수행된다.

  • Replication : Topic내 Partition의 복제본. replication-factor를 통해 개수를 지정할 수 있다.
    • 복제수(replication factor)만큼 파티션의 복제본이 각 브로커에 생김
    • 토픽 생성시 복제수를 2로 하면 파티션이 2개가 각각의 브로커에 생김
  • leader와 follower로 구성
    • Procducer & Consumer는 리더를 통해서만 메시지 처리
    • 팔로워는 리더가 속한 브로커에서 메시지를 복제함
  • 리더가 속한 Broker가 장애나면 다른 팔로워가 리더가 되어서 처리

Kafka 구성 요소

Kafka 사용 객체 및 인프라

KafkaCluster: 카프카의 브로커들의 모임. Kafka는 확장성과 고가용성을 위하여 broker들이 클러스터로 구성
Broker: 각각의 카프카 서버, 동일 노드에 여러 브로커를 띄울 수 있다.
Zookeeper: 카프카 클러스터 정보 및 분산처리 관리 등 메타데이터 저장. 카프카를 띄우기 위해 반드시 실행되어야 함(곧 카프카 클러스터와 통합 예정)
Producer: 메시지(이벤트)를 발행하여 생산(Wirte) 하는 주체
Consumer: 메시지(이벤트)를 구독하여 소비(Read) 하는 주체

Kafka 용어 정리

카프카에 저장되는 메시지는 topic으로 분류, topic은 여러개의 patition으로 나눠짐

Topic: 메시지를 구분하는 단위

  • 파일시스템의 폴더, 메일함과 유사함 ex) 주문용 토픽, 결제용 토픽 등

Partition: 메세지를 저장하는 물리적인 파일

  • 한 개의 토픽은 한 개 이상의 파티션으로 구성됨
  • 파티션은 메시지 추가만 가능한 파일(append-only)

offset: 파티션내 각 메시지의 저장된 상대적 위치

profile
먹깨비 개발자

0개의 댓글