개발 이야기/Kafka

[Kafka] (1) Kafka란?

올리버 2022. 3. 20. 00:24

Kafka란?

Kafka는 Distributed Event Streaming Platform(분산 이벤트 스트리밍 플랫폼)이다.

Publish-Subscribe 모델의 Message Queue이며, 분산에 특화되어 있다.


기본 구조

1.1 Event

  • Event는 Producer와 Consumer가 데이터를 주고 받는 단위이다. 

1.2 Topic

  • Event가 쓰이는 곳이다.
  • Topic은 파일시스템의 폴더 또는 디렉토리와 유사하며, 이벤트는 폴더안의 파일과 유사하다.
  • Topic의 개수는 제한이 없고, 이름으로 구분된다.
  • Topic이 다시 특정한 개수의 partitions이 된다. 개수의 명시가 필요하다

1.3 Partition

  • Topic이 나눠지는 단위이다.
  • Partition에 한 번 쓰여진 데이터는 변경이 불가능 하다.
  • Topic을 구성하는 Partition은 정렬되어 있지만, 키 값이 제공되지 않으면 랜덤하게 할당한다.
  • 하나의 파티션에 순차적으로 처리하는 것보다 병렬 처리하여 시간을 절약하기 위해 Partition을 나눈다.

1.4 Broker

  • Kafka 서버를 가르키며 특정한 Topic의 Partition을 보유한다.
  • 3개 이상의 Broker를 가지는 것이 장애 허용 관점에서 좋다.

1.5 Producer

  • Producer는 Kafka에 Event를 게시하는 클라이언트 어플리케이션이다.

1.6 Consumer

  •  Consumer은 Topic을 구독하고 얻어낸 이벤트를 처리하는 클라이언트 어플리케이션이다.

1.7 Zookeeper

  • Kafka Cluster 상태를 관리한다.
  • Broker를 모니터링하고, Topic과 Partition을 관리한다.
  • Kafka는 Zookeeper없이 실행할 수 없다.

Broker의 디스크 순차 저장 및 처리

  • Event를 메모리에 저장하는 기존 메시징 시스템과는 달리 Event를 파일 시스템에 저장한다.
  • 파일 시스템에 Event를 저장하기 때문에 별도의 설정을 하지 않아도 데이터의 영속성(durability)이 보장된다.
  • 디스크가 순차적으로 저장되어 있으므로 디스크 I/O가 줄어들어 속도가 빠르다

Pub-Sub모델을 활용한 멀티 Producer, Consumer

  • Event를 보내는 역할(Producer)받는 역할(Consmer)이 완벽하게 분리되어 있다.
  • 느슨한 결합을 통해 어느 한쪽 시스템에서 문제가 발생하더라도 서로 의존성이 없으므로 연쇄작용이 발생할 확률은 매우 낮다.
  • 하나의 Topic에 여러 Producer 또는 Consumer들이 접근 가능한 구조로 되어 있다.
  • 그렇기 때문에 하나의 Producer가 하나의 Topic에만 Event를 보내는 것이 아닌 하나 이상의 Topic으로 보내고, Consumer는 하나 이상의 Topic으로 부터 Event를 가져온다.

확장성

  • 하나의 Kafka Cluster는 3대의 Broker로 시작해 수십대의 Broker로 확장 가능하다.
  • 온라인 상태에서 무중단 확장이 가능하다.

 

먼저 Kafka의 구성 요소와 가장 큰 특징인 디스크 처리와 pub-sub 모델을 알아보았다.

다음 장에서 Topic에 대해 알아보자

 

 참고 

https://kafka.apache.org/documentation/#gettingStarted

https://www.tibco.com/ko/reference-center/what-is-apache-kafka

https://velog.io/@busybean3/%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4Apache-Kafka%EC%9D%98-%ED%8A%B9%EC%A7%95-3

https://velog.io/@qlgks1/0%EC%9E%A5.-%EC%B9%B4%ED%94%84%EC%B9%B4Kafka%EB%9E%80

'개발 이야기 > Kafka' 카테고리의 다른 글

[Kafka] (2) Topic과 Partition  (0) 2022.03.23