728x90
반응형
SMALL

Kafka Broker

  • Topic과 Partition을 유지 및 관리
  • Partition에 대한 Read 및 Write를 관리하는 소프트웨어
  • Kafka Server라고 부르기도 함
  • Topic 내 Partition 들을 분산, 유지 및 관리
  • 각각의 Broker들은 ID로 식별됨 (단, ID는 숫자)
  • Topic의 일부 Partition들을 포함, Topic 데이터의 일부분(Partition)을 갖을 뿐, 데이터 전체를 가지고 있는게 아님
  • Kafka Cluster: 여러 개의 Broker들로 구성
  • Client는 특정 Broker에 연결하면 전체 클러스터에 연결됨
  • 최소 3대 이상의 Broker를 하나의 Cluster로 구성해야 한다. 4대 이상을 권장한다.

 

 

Kafka Broker ID와 Partition ID의 관계

아무런 관계도 없다.

 

Bootstrap Servers

  • Broker Servers를 의미한다. 
  • 모든 Kafka Broker는 Bootstrap Server라고 부른다.
  • 하나의 Broker에만 연결하면, Cluster 전체에 연결된다. 하지만, 특정 Broker 장애를 대비하여 전체 Broker List(IP, Port)를 파라미터로 입력하는 걸 권장한다.
  • 각각의 Broker는 모든 Broker, Topic, Partition에 대해 알고 있다.

 

728x90
반응형
LIST

'Apache Kafka' 카테고리의 다른 글

p6. Replication  (0) 2025.03.15
p5. Consumer  (0) 2025.03.15
p4. Producer  (0) 2025.03.15
p2. Topic, Partition, Segment  (0) 2025.03.15
p1. Apache Kafka란  (0) 2025.03.15
728x90
반응형
SMALL

Apache Kafka의 주요 요소

- Topic, Producer, Consumer

  • Producer: 메시지를 생산해서 Kafka의 Topic으로 메시지를 보내는 애플리케이션
  • Consumer: Topic의 메시지를 가져와서 소비하는 애플리케이션
  • Consumer Group: Topic의 메시지를 사용하기 위해 협력하는 Consumer들의 집합
  • 하나의 Consumer는 하나의 Consumer Group에 포함되며, Consumer Group내의 Consumer들은 협력하여 Topic의 메시지를 분산 병렬 처리한다.

 

ProducerConsumer의 기본 동작 방식

  • Producer와 Consumer는 서로 알지 못하며, Producer와 Consumer는 각각 고유의 속도로 Commit Log에 Write, Read를 수행
  • 다른 Consumer Group에 속한 Consumer들은 서로 관련이 없으며, Commit Log에 있는 Event를 동시에 다른 위치에서 Read할 수 있다.

 

Kafka Commit Log

  • Commit Log: 추가만 가능하고 변경 불가능한 데이터 스트럭처, 데이터(Event)는 항상 로그 끝에 추가되고 변경되지 않는다.
  • Offset: Commit Log에서 Event의 위치, 아래 그림에서는 0부터 10까지의 Offset을 볼 수 있다.

 

Producer가 Write하는 LOG-END-OFFSET과 Consumer Group의 Consumer가 Read하고 처리한 후에 Commit한 CURRENT-OFFSET과의 차이(Consumer Lag)가 발생할 수 있다.

 

 

Topic, Partition, Segment

  • Topic: Kafka안에서 메시지가 저장되는 장소. 논리적인 공간
  • Partition: Commit Log. 하나의 Topic은 하나 이상의 Partition으로 구성. 보통은 병렬 처리를 위해 다수의 Partition 사용.
  • Segment: 메시지(데이터)가 저장되는 실제 물리 File. Segment File이 지정된 크기보다 크거나 지정된 기간보다 오래되면 새 파일이 열리고 메시지는 새 파일에 추가된다.

 

 

조금 더 구체적으로 들여다보면, 

  • Topic 생성 시 Partition의 개수를 지정하고, 각 Partition은 Broker들에 분산되며 Segment File들로 구성된다.
  • Rolling Strategy: log.segment.bytes(default 1GB), log.roll.hours(default 168 hours)

Active Segment

Partition당 하나의 Active Segment가 존재하는데, 이게 무슨 말이냐면,

  • 특정 Partition에는 Segment가 있고, 이 파일이 실제 데이터가 저장되는 파일인데 크기 또는 시간이 지정한 값보다 더 커지면 새로운 파일을 만들어 그 파일에 저장한다고 했다. 그리고 현재 저장되는 파일을 Active Segment 파일이라고 부른다.
  • Partition당 오직 하나의 Segment가 활성화(Active)되어 있다. 
  • Active된 Segment가 아닌 파일에는 변경이 불가능하다.

 

정리를 하자면

  • Topic 생성 시, Partition 개수를 지정한다. 개수 변경은 이후에도 가능하나 운영시에는 변경 권장하지 않는다. 그 이유는 이후에 설명한다.
  • Partition의 번호는 0부터 시작하고 오름차순
  • Topic 내 Partition 들은 서로 독립적
  • Event(Message)의 위치를 나타내는 Offset이 존재
  • Offset은 하나의 Partition에서만 의미를 가진다. 즉, Partition 0번의 Offset 1 은 Partition 1의 Offset 1과 아무런 관련이 없다.
  • Offset 값은 계속 증가하고 0으로 돌아가지 않는다.
  • Event(Message)의 순서는 동일한 Partition 내에서만 보장
  • Partition에 저장된 데이터(Message)는 변경이 불가능(Immutable)
  • Partition에 Write되는 데이터는 맨 끝에 추가되어 저장
  • Partition은 Segment File들로 구성되고, Rolling 정책은 log.segment.bytes(default 1GB), log.roll.hours(default 168 hours)

 

728x90
반응형
LIST

'Apache Kafka' 카테고리의 다른 글

p6. Replication  (0) 2025.03.15
p5. Consumer  (0) 2025.03.15
p4. Producer  (0) 2025.03.15
p3. Broker  (0) 2025.03.15
p1. Apache Kafka란  (0) 2025.03.15
728x90
반응형
SMALL

Kafka란 이벤트 스트리밍 플랫폼이다.

 

Event란?

이벤트는 비즈니스에서 일어나는 모든 일(데이터)을 의미한다.

  • 웹 사이트에서 무언가를 클릭하는 것
  • 청구서 발행
  • 송금
  • 배송 물건의 위치 정보
  • 택시의 GPS 좌표
  • 센서의 온도/압력 데이터

 

Event Stream은 그러니까 곧 = 연속적인 많은 이벤트들의 흐름.

 

Apache Kafka의 탄생

LinkedIn에서 개발된 이벤트 스트림 처리 플랫폼이고, 하루 4.5조 개 이상의 이벤트 스트림을 처리하기 위해 개발했다고 한다. 2011년에 Apache Software Foundation에 기부되어 오픈소스화됐다. 2012년 Apache Incubator 과정을 벗어나 최상위 프로젝트가 되고 현재는 Fortune 100 기업 중 80%이상이 사용중인 어마어마한 프로젝트.

 

Kafka 창시자인 Jay Kreps가 세운 Confluent 라는 회사도 2014년에 설립

 

Apache Kafka의 특징

 

Apache Kafka 사용 사례

이벤트가 사용되는 모든 곳에서 사용된다.

  • Messaging System
  • IOT 디바이스로부터 데이터 수집
  • 애플리케이션에서 발생하는 로그 수집
  • Realtime Event Stream Processing
  • DB 동기화 (MSA 기반의 분리된 DB간 동기화)
  • 실시간 ETL
  • Spark, Flink, Storm, Hadoop과 같은 빅데이터 기술과 같이 사용

산업 분야 별 Apache Kafka 사용 사례

교통 금융 오락 온라인 마켓
운전자 - 탑승자 매치 (탑승좌석) 사기 감지, 중복 거래 감지 실시간 추천 실시간 재고 정보
도착예상시간(ETA) 업데이트 거래, 위험 시스템 사기 감지 대용량 주문의 안전한 처리
실시간 차량 진단 모바일 애플리케이션 고객 경험 In-App 구매  

 

 

728x90
반응형
LIST

'Apache Kafka' 카테고리의 다른 글

p6. Replication  (0) 2025.03.15
p5. Consumer  (0) 2025.03.15
p4. Producer  (0) 2025.03.15
p3. Broker  (0) 2025.03.15
p2. Topic, Partition, Segment  (0) 2025.03.15

+ Recent posts