MATT's

kafka란? 본문

Kafka

kafka란?

matt5659 2020. 7. 29. 22:49

  • 메세징 큐의 일종
  • 분산형 스트리밍 플랫폼 (A distributed streaming platform)
    LinkedIn에서 여러 구직, 채용 정보들을 한 곳에서 처리(발행/구독)할 수 있는 플랫폼으로 개발됨
  • 대용량의 실시간 로그 처리에 특화된 메세징 시스템
    기존 메세징 시스템 대비 TPS가 매우 우수하다는 평을 듣는다.
    ( *TPS : 초당 트랜잭션 수, 초당 특정 엔티티가 수행한 동작의 수 (Transactions per second) )
  • 메세지를 기본적으로 메모리에 저장하는 기존 방식과는 달리, 메세지를 파일 시스템에 저장하는 방식 사용
    -> 메세지 유실 우려 감소
  • 기존 메세징 시스템에서는 broker가 consumer에게 메세지를 push해주는 방식인데 반해,
    Kafka는 consumer가 broker로부터 직접 메세지를 가져가는 pull방식으로 동작
    consumer는 자신의 처리 능력만큼만의 메세지를 가져오기 때문에 최적의 성능을 낼 수 있다.

 

Kafka 주요 개념

Producer

- 메세지 생산(발행)자

- 메세지를 생성하여 Broker로 전송

- 전송된 메세지는 Partition에 신규 offset과 함께 기록됨

Consumer

- 메세지 소비자

- Consumer는 Broker로부터 메세지를 요청하여 가져감(polling)

Broker

- Kafka Server를 의미

- 한 개의 클러스터 내에서 여러 kafka Server를 실행할 수 있다. (주로 3대 이상의 Broker로 Cluster를 구성)

Zookeeper

- Broker에 분산 처리된 메세지큐의 정보들을 관리

- 클러스터 최신 설정 정보 관리, 동기화 리더 채택 등 클러스터 서버들이 공유하는 데이터를 관리하기 위해 사용한다.

- Meta-Data (broker id, controller id 등) 저장하는 역할

- 클러스터를 관리하는 Zookeeper 없이는 kafka 구동이 불가능하다.
  때문에 Kafka 서버를 가동하려면 Zookeeper를 먼저 가동해줘야 한다.

Controller

- Broker 중 1대는 Controller 기능을 수행

- 각 Broker에게 담당 파티션 할당 수행

- Broker 정상 동작 모니터링 관리

Cluster

- Broker 묶음

Topic

- 메시지 종류 (메세지 분류 단위)

- 메세지가 생산되고 소비된느 주제

- 예를 들어 카톡 단체방 같다고 생각하면 쉽다.
  (카톡 단체방 A, B가 있을 때, A에서 나눈 대화는 A 대화방에 존재하는 사람들에게만 보여져야한다.)

- 주제에 따라 여러 topic을 생성하면 된다.

Partitions

- Topic 내에서 메세지가 분산되어 저장되는 단위

- 한 Topic에 Partition이 3개 있다면, 3개의 Partition에 대해 메세지가 분산되어 저장된다

- Partition 내부에 Queue 방식으로 저장되기 때문에 Partition 내부에서는 순서가 보장되지만, Partition 끼리는 순서가 보장되지 않는다.

Offset

- Partition 내에서 각 메세지를 식별할 수 있는 Unique ID

- 메세지를 소비하는 Consumer가 읽을 차레를 의미하므로 Partition마다 별도로 관리된다.

Log

- 1개의 메세지를 뜻한다.

- Partition의 한 칸을 Log라고 한다.

- Log는 key, value, timestamp로 구성된다.

 

Kafka segment

- 실제로 메세지는 파일 시스템 단위로 저장

- 세그먼트는 시간 또는 크기 기준으로 닫힘

- 세그먼트가 닫힌 이후 일정 시간(또는 용량)에 따라 삭제(delete) 또는 압축(compact)

 

 

[참고]

[kafka]기본 개념잡기 :: victolee

What is Kafka?-꿈꾸는 태태태의 공간

'Kafka' 카테고리의 다른 글

Kafka - 실습  (0) 2020.08.03
메세징 시스템(Messaging System)  (0) 2020.07.20