본문 바로가기
Kafka

카프카 개념 정리(3) - 카프카 아키텍처

by devLog by Ronnie's 2022. 12. 25.

이번 시간에는 카프카에 대해서 좀 더 자세히 알아보는 시간을 가진다. 카프카의 아키텍처에 대해서 이해해본다. 카프카가 어떠한 구조로 이루어져있고 각 구조들이 어떠한 역할을 하는지에 대해서 정리한다.

 

카프카 개념 정리(3) - 카프카 아키텍처

 

카프카 개념 정리(3) - 카프카 아키텍처

 

카프카 아키텍처


카프카는 클러스터를 중심으로 프로듀서와 컨슈머가 데이터를 push하고 pull 받는 구조도 되어 있다. 프로듀서와 컨슈머는 각기 다른 프로세스에서 비동기로 동작을 하고 있다. 이러한 일련의 동작과정을 이해하기 위해서는 먼저 카프카 아키텍쳐를 이루는 구성 요소들을 알아야한다. 넓은 범위에서 부터 정리를 한다.

카프카 클러스터  : 카프카 서버로 이루어진 클러스터

브로커 : 카프카 서버

주키퍼 : 분산 코디네이션 시스템으로 카프카 브로커를 하나의 클러스터로 코디네이팅하는 역할을 한다. 카프카 클러스터의 리더를 발탁하는 방식도 주키퍼가 제공하는 기능을 이용한다.

토픽 : 카프카 클러스터에 데이터를 관리할 기준이 되는 개념. 토픽은 카프카 클러스터에서 여러개 만들 수 있으며 하나의 토픽은 1개 이상의 파티션으로 구성되어 있다.

 

 

파티션 - 각 토픽 당 데이터를 분산 처리하는 단위. 토픽 안에서 파티션을 나누어 그 수대로 데이터를 분산 처리한다. 그리고 replica 옵션을 추가하여 설정한 replica 수 만큼 각 서버들에게 복제된다.

 

파티션 오프셋(partition offset) - 해당 그림에는 보이지는 않지만 각 파티션마다 오프셋이라는 값을 가지고 있다. 해당 값을 통해서 파티션의 데이터를 순차적으로 처리할 수 있게 된다. (자세한 내용은 이후 파티션 읽기/쓰기에서 설명 참고)

 

 

 

리더 / 팔로워 : replica 옵션에 따라 복제된 파티션들 중에서 하나의 리더가 선출되고 나머지는 팔로워가 된다. 여기서 리더로 선출된 파티션이 모든 읽기, 쓰기 연산을 담당하게 되고 나머지 팔로워들은 단순히 리더의 데이터를 복사하는 역할만 한다. (이렇게 설정하는 이유는 이후 ISR 설명 참고) 즉, 리더 파티션은 프로듀서 또는 컨슈머와 직접 통신하는 파티션이다. 컨슈머 그룹 : 컨슈머의 집합을 구성하는 단위다. 카프카에서는 컨슈머 그룹으로 데이터를 처리하는데 컨슈머 그룹 안 컨슈머 수 만큼 파티션의 데이터를 분산처리하게 된다.

 

이제 설명을 보았으니 다시 아키텍쳐의 이미지를 보고 위에 말한 구성요소들을 살펴본다. 먼저 카프카 클러스터는 브로커 3대로 구성이 되어 있다. 토픽은 A, B 두개가 만들어져 있고 그 안에 파티션은 0, 1, 2 3가지가 존재하는데 replica 옵션을 사용하여 각각 2개씩 복제되어 총 9개인 것을 확인 할 수 있다. 그리고 각 파티션마다 리더와 팔로워가 선정된 것을 확인할 수 있다. 그리고 해당 카프카 클러스터에 메시지를 제공하는 프로듀서 2대와 메시지를 구독하는 컨슈머 그룹 3개, 그리고 각 그룹마다 컨슈머들이 메시지들을 분산으로 가져가 처리하는 것을 확인 가능하다.

 

여기까지 보면 대략적인 플로우는 이해가 가지만 몇가지 궁금점들이 남는다. 해당 사항에 대해서는 다음장에서부터 정리한다.

 

 

이전 글


카프카 개념 정리(1) - 카프카와 카프카의 탄생 배경

 

카프카 개념 정리(1) - 카프카와 카프카의 탄생 배경

카프카에 대한 개념을 정리하는 시간을 가지려 한다. 그 첫번째로 카프카가 무엇인지 간단한 개념과 카프카가 탄생하게 된 배경에 대해서 정리한다. 카프카에 대한 자세한 설명은 (2)에서 정리

sjparkk-dev1og.tistory.com

카프카 개념 정리(2) - 카프카의 동작 방식 Pub Sub

 

카프카 개념 정리(2) - 카프카의 동작 방식 Pub Sub

카프카에 대한 개념을 정리하는 시간을 가지려 한다. 그 두번째로 카프카의 동작 방식과 pub / sub 모델의 대한 장단점과 특징 및 메시징 시스템이란 무엇인지에 대해서 정리한다. 카프카 개념 정

sjparkk-dev1og.tistory.com

 

참고


https://damdam-kim.tistory.com/16

 

Apache Kafka 개요 & Architecture 설명

목차 Apache Kafka Kafka Architecture Kafka 데이터 쓰기 Kafka 데이터 읽기 Apache Kafka LinkedIn에서 최초로 출발하여 정식 Apache Opensource로 등록된 분산 이벤트 스트리밍 플랫폼 Producer와 Consumer의 분리 (Pub / Sub

damdam-kim.tistory.com

 

 

https://engkimbs.tistory.com/691

 

아파치 카프카(Apache Kafka) 아키텍처 및 동작 방식

| 아파치 카프카(Apache Kafka)란? 아파치 카프카(Apache Kafka)는 분산 스트리밍 플랫폼이며 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션입니다. 카프카는 대용량의 실시간 로그처리

engkimbs.tistory.com

https://magpienote.tistory.com/212

 

[Apache Kafka]구성요소 이해하기(Cluster, Broker, Topic, Partition, Producer, Consumer, Zookeeper)

Kafka 기본 아키텍처 Topic이란? Topic은 파티션의 그룹이라고 할 수 있음 Topic은 카프카 데이터 스트림이 어디에 Publish될지 정하는데 쓰임 Topic은 파티션들을 모아두는 곳이라고 이해해도 좋음 Produce

magpienote.tistory.com

댓글