[Kafka 이해] 카프카 기본 개념 1

donghyeok·2022년 7월 25일
0

Kafka

목록 보기
1/6

1. Apache Kafka란 무엇인가?

기본 용어

  • Data in Motion Platform (Event Streaming Platform)
    카프카는 실시간으로 흐르는 이벤트 스트림을 받고 필요한 곳에 이벤트 스트림을 보내주는 플랫폼

  • Event란?
    Event는 비즈니스에서 일어나는 모든 일(데이터)를 의미 (클릭, 송금, 택시 GPS 좌표 등..)

  • Event Stream이란?
    연속적인 많은 이벤트들의 흐름. 이벤트는 빅데이터의 특징을 가짐

Kafka의 특징 3가지

  1. 이벤트 스트림을 안전하게 전송 (Publish & Subscribe)
  2. 이벤트 스트림을 디스크에 저장 (Write to Disk)
  3. 이벤트 스트림을 분석 및 처리 (Processing & Analysis)

Apache Kafka 사용 사례

  • Messaging System
  • IoT 디바이스로부터 데이터 수집
  • 애플리케이션에서 발생하는 로그 수집
  • 실시간 이벤트 스트림 프로세싱 (이상 감지 등)
  • DB 동기화 (MSA 기반의 분리된 DB간 동기화)
  • 빅데이터 기술에서 데이터를 처리하는데 사용
  • 운전자 - 탑승자 매칭

2. Topic, Partition, Segment

기본 용어

  • Topic : Kafka 안에서 메시지가 저장되는 장소의 논리적인 표현
  • Producer : 메시지를 만들어서 Kafka의 Topic으로 메시지를 보내는 애플리케이션
  • Consumer : Topic의 메시지를 가져와서 소비하는 애플리 케이션
  • Consumer Group : Topic의 메시지를 사용하기 위해 협력하는 컨슈머의 집합

기본 동작 방식

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

Commit Log

  • Commit Log
    추가만 가능하고 변경 불가능한 데이터 스트럭처, 데이터는 항상 로그 끝에 추가되고 변경X
  • Offset
    Commit Log에서 Event의 위치

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

Topic, Partition, Segment

논리적 View

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

물리적 view

  • Topic 생성시 Partition 개수를 지정하고, 각 Partition은 Broker들에 분산되며 Segment File 들로 구성됨.
  • Rolling Strategy : Segment를 분리하는 정책
    - log.segment.bytes(default 1GB), logroll.hours(default 168 hours)
  • Partition당 오직 하나의 Segment가 활성화 되어 있음 (데이터가 쓰여지고 있는 중)

0개의 댓글

관련 채용 정보