아파치 카프카(Apache Kafka) 기본 개념

Hyebin Lee·2022년 10월 29일

참고한 링크

https://engkimbs.tistory.com/691

카프카란?

  • 분산 스트리밍 플랫폼, 메세지 서버, 비동기 메세징 전송 방식
  • 데이터 파이프라인을 만들 때 사용되는 오픈소스 솔루션
  • Fault-Tolerant : 데이터 유실없이 안전하게 전달

중앙에 메세징 시스템 서버(카프카)를 두고 각 서버에서 메세지를 보내고 받는 형태의 PUB/SUB 통신을 한다

카프카 특징

publisher subscriber 모델

  • 데이터 큐를 사이에 두고 비동기적, 독립적으로 메세지를 주고 받음
  • 결합이 느슨하여 안정적 처리 가능
  • 설정이 간단함

고가용성 및 확장성

  • Fault-tolerant 하여 고가용성 서비스 제공 가능
  • 분산 처리를 통해 빠른 데이터 처리
  • 서버를 수평적으로 늘려 안정성 및 성능 향상 sacle-out 가능

디스크 순차 저장 및 처리

  • 메모리 큐가 아닌 디스크에 순차적으로 메모리 적재
  • 서버에 장애가 나도 메세지가 디스크에 저장되어 유실 걱정이 없음
  • 디스크 IO가 줄어들어 성능 향상

분산처리

  • 파티션을 서버들에 분산시켜 나누어 처리
  • 빠른 처리 가능

카프가 동작 과정

카프카 클러스터

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

브로커

카프카 서버

주키퍼

분산 코디네이션 시스템

토픽

카프카 클러스터에 데이터를 관리할 시 그 기준이 되는 개념
하나의 토픽은 한개 이상의 파티션으로 구성되어 있음
데이터를 관리하는 하나의 그룹

파티션

각 토픽 당 데이터를 분산 처리하는 단위
토픽 안에 파티션을 나누어 그 수대로 데이터를 분산 처리

리더, 팔로워

카프카에서는 각 파티션 당 복제된 파티션 중에서 하나의 리더가 선출
이 리더는 모든 읽기,쓰기 연산 담당
리더를 제외한 나머지는 팔로워 -> 단순히 리더의 데이터를 복사

카프카 파티션 읽기, 쓰기


하늘색으로 칠해진 각 파티션들은 리더 파티션이고 이 파티션들에게 프로듀서가 쓰기 연산을 진행
리더 파티션에 쓰기가 진행된 후 업데이트된 데이터는 각 파티션의 복제본들에게로 복사

  • 프로듀서가 파티션들에게 write 연산을 진행하는 방법

    카프카는 데이터를 순차적으로 디스크에 저장하는데 따라서 저장된 데이터 뒤에 append 형식으로 데이터를 추가하게 된다.
    이때 각각 파티션들의 데이터 집합을 offset이라고 한다
    이 데이터의 EXPIRE DATE는 직접 지정할 수 있으며 DEFAULT는 7일이다

  • 컨슈머가 consume 하는 방법
    컨슈머그룹의 각 컨슈머들은 파티션의 오프셋을 기준으로 데이터를 순차적 처리한다.
    컨슈머 그룹으로 나누어서 데이터를 처리하는데 같은 그룹 내의 컨슈머는 따라서 절대 같은 파티션의 데이터를 처리하지 않는다

0개의 댓글