kafka 용어

yoon__0_0·2024년 7월 4일
0

이어드림 수업

목록 보기
85/103
post-thumbnail

기본 용어

Topic

  • 메세지를 전달할 때 사용되는 명칭
  • topic을 생성하고 해당 topic으로 전달
  • 데이터를 전송 /저장/ 수신하는 논리적인 단위
  • 저장된 데이터는 절대 변경 불가 (log형식)

Kafka Cluster

  • topic별로 메시지를 분류하고 분산 저장
  • consumer가 순서대로 가져가도록 offset을 관리

producer

  • 데이터를 주는 것

consumer

  • 데이터를 가져오는 것

broker

  • 서버

zookeeper

  • 서버 관리용
  • broker, topic 관리 및 모니터링

Topic

  • 파일단위 분산도 성능에 영향을 미침

partition

  • Producer는 하나의 topic의 메세지를 여러개의 partition으로 분산하여 저장
  • partition은 또 여러개로 지정가능
  • partition이 많으면 데이터를 병렬로 쓰고 읽어올수 있음
  • 가져가는 쪽에서의 순서는 보장하지 않음

segment

  • topic : strimzi_carary
  • parition : 0
  • index : offset기준 index, 시간 기준 index 두개 모두 지원함

offset이란?

  • producer만 offset을 증가시킬 수 있음.
  • 각 consumer는 자신이 마지막으로 읽은 위치를 저장함

offset lag

  • producer offset - consumer offset
  • lag이 커질수록 consumer의 문제 가능성이 높음
  • lead : 현재 consumer offset - 0

Replication

  • leader, follower가 존재함.
  • follower의 갯수를 지정할 수 있음.
  • 유실 방지를 위해서 만든 것

ISR

  • In Sync Replica
  • 복제본이 Sync가 되어있나
  • 원본 partition이 정상적으로 복제가 완료된 partition들을 뜻함
  • ISR 상태의 partition들만 leader로 선출 가능
  • OSR : Out of Sync Replicas
  • OSR은 ISR의 반대 개념으로 메시지가 복제되지 못하는 상태를 뜻함
  • 이를 모니터링 하는 것도 필요 ( 복제가 되고 있는지 아닌지)

Broker

  • Zookeeper가 있어야 존재할 수 있음.
  • kafka Cluster을 중심으로 메시지를 분산 처리
  • 데이터는 broker 서버가 있는 하드 디스크의 저장하기 때문에 하드 디스크 성능이 좋으면 전체 좋아짐
  • 데이터 유실 방지를 위해 존재함
  • 가용성을 위해 Broker는 최소 3개에서 4개 이상을 권장하지만, replication 개수에 따라 조정
  • kafka broker를 bootstrap server라고 함
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic kv_topic
  • controller broker : kafka Cluster에 속한 broker 상태 관리 및 topic의 상태 관리
  • zookeeper cluster가 하는걸 active controller이 함.

Zookeeper

관리사항

  • active controller만 각각의 broker 정보를 zookeeper에게 받음
  • zookeeper 내에는 브로커에 대한 모든 정보들이 존재함. =
  • topic, 상태, broker, partition 등등 모든 것을 관리하게 됨.
  • producer, consumer 의 관리

가용성 확보

  • zookeeper 서버 장애 발생시 시스템의 가용성 및 일관성 유지를 위해
  • Quorum : 정족수 이며 과반수.
  • 즉 , 정족수 때문에 홀수로 띄우고 보통 3대룰 띄움

Producer

  • 데이터를 안정적으로 빠르게 전송하는 프로그램

  • 어디에 보낼지는 active controller에게 미리 받음

  • 카프카와 프로듀서 사이에 네트워크 대역이 조금 부족하면 압축을 하는 경우가 좋음

데이터 구조

  • value : 메세지
  • header : 어떤 broker, 어떤 partition으로 보낼지, topic, partitions 등등
    • topic은 꼭 사용자가 지정해줘야함.
    • 나머진 모두 optional 하게 지정하게 지정해줌
  • key : 넣어도 되고 아니여도됨
    • key를 지정하지 않으면 라운드 로빈 방식으로 저장됨
    • 그렇게 되면 순서를 유지하지 못하게 됨.
    • 특정 키가 특정 파티션에 맵핑되도록 함. (순서보장)
    • 하지만, 너무 한쪽 partition에 몰리게 하면 안됨. (데이터 불균형 = 데이타 스큐)

Serializer , Deserializer

  • 네트워크를 통해 전송하기 위한 byte array 변환 , 재변환

Consumer

  • 대량의 데이터를 빠르게 수신하는 프로그램
  • 똑같은 데이터를 여러 곳에서 가지고 올 수 있음.
  • partition하나당 consumer 하나씩이 가장 이상적인 방법
  • 여러개의 컨슈머가 하나의 topic을 바라보면 이들은 모두 Group으로 묶임
  • consumer offset : 내부적으로 topic을 만들고, offset을 기록하는 방식 -> 데이터 유실 방지
  • 순서가 보장되지 않음
profile
신윤재입니다

0개의 댓글