초보 개발자의 스터디룸

[Kafka] 아파치 카프카란? 1. 구성요소, 연산방식, 관련용어

justdoIT0730 2023. 1. 4. 17:26
728x90
728x90

카프카 게시글

1. Kafka의 구성요소

[기본 작동 방식]

 - Producer는 새 메시지를 Kafka에 전달
 - 전달된 메시지는 Broker의 Topic이라는 메시지 구분자에 저장
 - Consumer는 구독한 Topic에 접근하여 메시지를 가져옴

 

1. Producer(프로듀서)

 - 메시지를 만들어서 카프카 클러스터에 적재

 - key값 지정하여 특정 파티션으로만 전송 가능

 

2. Kafka Cluster(카프카 클러스터) 

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

 

 [카프카 클러스터의 구성요소]

 2.1 Broker(브로커)

  - 카프카 서버

  - Producer와 Consumer사이의 발행된 메시지를 저장하고 구독할 수 있게 해주는 중계 역할

  - 페이지 캐시 사용하여 데이터 입출력 속도 보완

 

 2.2 ZooKeeper(주키퍼)

  - 분산 애플리케이션 관리를 위한 코디네이션 시스템

  - 메타데이터 관리 및 브로커의 상태정보 확인

  - 카프카 클러스터의 Leader 선택 기능 제공

 

메타데이터 : 데이터에 관한 구조화된 데이터. 즉, 타 데이터를 설명해주는 데이터)

 

 2.3 Topic(토픽)

  - 카프카 클러스터에 데이터 관리 간 기준이 되는 개념 : 다수의 프로듀서 및 컨슈머가 동일한 카프카 사용 시 토픽으로 구분

  - 카프카 클러스터 내 다수의 토픽 생성 가능

  - 토픽 생성 시 1개 이상의 파티션으로 구성(파티션 개수 지정 가능)

 

 2.4 Partition(파티션)

  - 병렬 처리 및 고성능을 위해 하나의 토픽을 여러 개로 나눈 것

  - 파티션 개수 추가만 가능 : 개수 감소 불가

  - 파티션 개수 1개 시 전 메시지 순서 보장

  - 파티션의 개수가 증가할수록 효율성(처리량) / 관리 포인트 및 장애 복구 시간 증가 : 처리속도 불충분 시 개수 증가 조치 요망

  - 파티션 내 각 메시지는 Offset(고유 번호)로 구분 

  - 파티션 수만큼 컨슈머 연결 가능

  [파티션의 종류]

  2.4.1 Leader Partition(리더) 

   - 모든 읽기, 쓰기 연산을 담당

   - 프로듀서, 컨슈머와 직접적으로 테이터를 통신하는 파티션

 

  2.4.2 Follower Partition(팔로워) 

   - 리더의 데이터를 단순 복사(복제, Replication)하는 역할

   - 리더의 오프셋과 자신의 오프셋을 비교하여 다를 경우 리더의 데이터를 가져와서 자신의 파티션에 저장

 

3. Consumer Group(컨슈머 그룹)

 - 컨슈머의 집합을 구성하는 단위

 - 메시지를 가진 각 파티션에 대해 Offset 값 할당받음

 - 컨슈머 수만큼 파티션의 데이터를 분산 처리함

 - 한 개의 토픽을 소비하기 위해 같은 그룹의 여러 컨슈머가 함께 동작

 - 컨슈머 그룹 내 컨슈머는 파티션의 개수보다 적거나 같아야 자원의 낭비 방지 가능

  [컨슈머 그룹의 구성요소]

  3.1 Consumer(컨슈머)

  - 브로커의 Topic 이름으로 저장된 메시지를 가져오는 서버 또는 애플리케이션

  - 한 개의 토픽의 각 파티션은 하나의 컨슈머만 소비 가능

  - 컨슈머는 여러 대의 파티션으로부터 데이터 수용 가능

  - 파티션 소유권(Ownership) : 각 컨슈머가 각 파티션에 대응되는 것

 

 [설명]

  프로듀서가 데이터를 카프카에 적재하고 있으며 그 저장된 데이터를 컨슈머그룹 A, B 각각 처리해야 될 Topic(Foo, Bar)을 가져오는 그림입니다.

 

 Foo와 Bar은 각각 3개의 파티션으로 나뉘어 있고, 각각의 파티션들은 3개의 복제본으로 복제됩니다. 복제본 중 하나의 리더가 선출(하늘색)되고, 리더가 모든 데이터의 읽기, 쓰기 연산을 담당합니다.

 이때 중요한 것은 이 파티션들은 운영 도중 그 수를 늘릴 수 있지만 절대 줄일 수 없습니다. 그래서 파티션을 늘리는 것은 신중하게 결정해야 합니다.

 

 카프카 클러스터에서 컨슈머 그룹 단위로 데이터를 가져옵니다.

 각 컨슈머 그룹은 자신이 가져와야 하는 토픽 내 파티션의 데이터를 받게 됩니다.

 각 컨슈머 그룹의 컨슈머 내 파티션 수만큼 데이터를 처리하게 됩니다.

 

2. Kafka 연산 방식

 아파치 카프카에서의 연산(읽기, 쓰기)은 카프카 클러스터 내 리더 파티션에게만 적용됩니다.

 프로듀서가 리더파티션에게 쓰기 연산을 진행하고 이후 업데이트된 데이터는 각 파티션들의 복제본들에게로 복사됩니다.

 

 프로듀서가 각 파티션에 Write 연산을 진행하는 그림입니다. 카프카는 데이터를 순차적으로 디스크에 저장합니다. 따라서, 프로듀서는 순차적으로 저장된 데이터 뒤에 append 형식으로 Write 연산을 수행하게 됩니다. 이때 파티션들은 오프셋(Offset, 각 데이터들의 순차적인 집합)으로 구성되어 있습니다.

 컨슈머그룹의 각 컨슈머들은 파티션의 오프셋을 기준으로 데이터를 순차적으로 처리합니다. 이 때 컨슈머들은 컨슈머 그룹으로 나뉘어서 데이터를 분산 처리하게 됩니다.

 한 컨슈머 그룹 내에 있는 컨슈머끼리 같은 파티션 데이터를 처리할 수 없습니다.

 

 파티션 내 데이터들은 순차적으로 저장되며, 이 데이터들은 설정값에 따라 디스크에 보관하게 됩니다.(2.x 기준 default 7일)

 

 컨슈머 그룹 내 컨슈머들은 각각의 파티션의 데이터를 처리합니다.

 

 컨슈머와 파티션의 개수가 같다면 컨슈머는 각 파티션을 1:1로 맡게 됩니다. 그리고 컨슈머의 개수가 파티션의 개수보다 적을 경우 컨슈머 중 하나가 남는 파티션의 데이터를 처리하게 됩니다. 

 만일 컨슈머의 개수가 파티션의  개수보다 많을 경우 남는 컨슈머는 파티션이 개수가 많아질 때까지 대기하게 됩니다.

 

3. Kafka 관련 용어

 3.1 Offset(오프셋)

  - 파티션 내 메시지의 위치를 표시하는 값

  - 컨슈머는 오프셋 값으로 메시지를 어디까지 읽었는 지 관리

 

 3.2 Replication(복제)

  - 각 메시지들을 다수 복제하여 카프카 클러스터 내 브로커들에 분산시키는 것.

  - 파티션 복제 가능 개수 : 1 ~ 브로커의 개수

  - 리더파티션의 오프셋과 자신의 오프셋을 비교해 다를 경우 리더의 데이터를 가져와 자신의 파티션에 저장하는 과정

 

 3.3 ISR(In Sync Replica)

  - 데이터의 정합성(상호 모순 없이 일관되게 일치해야 한다는 의미) 유지 목적으로 등장

  - 리더가 있는 브로커에 장애 발생 시 ISR 구성원 내 다른 팔로워로 새 리더 지정 가능

  - ISR 그룹 내 리더는 팔로워들이 주기적으로 데이터를 확인하는 지 체크함

 

 3.4 Rebalancing(리밸런싱)

  - 컨슈머 그룹 내 소유권 이관 기능 : 컨슈머 그룹 내 컨슈머들은 본인 파티션의 소유권 공유 가능 : 

  - 하나의 컨슈머 그룹에서 컨슈머1이 담당하던 파티션 작업을 컨슈머2가 이관받아 처리가능

  - 단점 : 리밸런싱 발생한 모든 컨슈머의 Reading 작업이 중단 : 일시적 서비스 중단 발생 가능

 

 

 

[출처]

https://engkimbs.tistory.com/691

 

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

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

engkimbs.tistory.com

https://jaehoney.tistory.com/197

 

카프카란 무엇인가? (+카프카 구성요소)

카프카(Kafka)란? 카프카(Kafka)는 2011년 미국 링크드인(Linkedin)에서 개발했다. 다음은 카프카 개발 전 링크드인의 데이터 처리 시스템이다. 기존 링크드인의 데이터 처리 시스템은 각 파이프라인이

jaehoney.tistory.com

https://log-laboratory.tistory.com/234

 

[kafka][용어정리] ISR : In Sync Replica

카프카를 사용하기 위해선 필수적으로 알아야할 개념 중 하나가 ISR 이다. 카프카에서 리더와 팔로워는 각자 역할이 나뉘는데 가장 중요한 것은 리더는 Read/Write를 하고, 팔로워는 주기적으로 리

log-laboratory.tistory.com

 

728x90
728x90