Kafka

장현진·2022년 8월 17일
0

개요

MSA프로젝트 였던 MODONG 에서 사용한 Kafka에 대해 배움점과 저의 생각을 정리하고자 한다.


정의 - 아파치 카프카(Apache Kafka)란?

대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 분산 메시징 플랫폼

카프카 '메일' 비유

우리가 잘 알고 있는 메일의 경우 보내는 사람은 받는 사람과 상관 없이 메일 서버로 메시지를 보낼 수 있다.
보낸 메시지는 메일서버에 저장되어 있고, 받는 사람은 자기가 원하는 시간에 언제든지 메일을 볼 수 있게 된다.카프카도 비슷하다.
프로듀서는 카프카로 메시지를 보내게 되고, 해당 메시지는 카프카에 저장되어 보관중이다.
그리고 컨슈머는 카프카에 저장되어 있는 메시지를 필요로 할때( 작업이 끝난경우, 요청을 받은 경우) 가져갈 수 있다.


카프카 사용 배경

링크드인은 왜 카프카를 만들었을까?
기존 Point to Point 연결 방식 아키텍처의 많은 문제점 해결을 위해서 Pub/Sub 모델을 채용

[Point to Point 연결 방식]

  • 통합/ 중앙화된 전송 영역이 없음 → Point to Point 연결이 갈수록 복잡해짐
  • 문제 발생 시 관련 여러 시스템을 확인해야 함 → 문제 해결이 어려워짐
  • 하드웨어 증설 같은 작업이 어려움
  • 데이터 파이프라인 관리의 어려움
  • 연결된 시스템 마다 제각기 다른 방식으로 구현될 수 있음 → 파이프라인 통합(확장)이 어려움

end- to -end [ Kafka ]

모든 시스템으로 데이터를 전송할 수 있고
실시간 처리 가능하고
급속도로 성장하는 서비스를 위해 확장이 용이한
시스템(카프카)을 만들자

카프카 개발팀의 목표
1. 프로듀서와 컨슈머의 분리
2. 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
높은 처리량을 위한 메시지 최적화
3. 데이터가 증가함에 따라 scale - out 이 가능한 시스템
4. end-to-end 방식 => 이벤트/ 데이터의 흐름을 중앙에서 관리하는 방식

- end-to-end 방식
- 이벤트/데이터 흐름을 중앙에서 관리하는 방식

카프카 동작 방식

  • 메시지 발행/구독 시스템

발행자는 브로커에게 메시지를 전송한다.
브로커는 발행된 메시지를 저장하고 구독중인 수신자에게 메시지를 중계한다.

  • Kafka Broker & Zookeeper란?
    브로커(broker)는 실행된 Kafka application 서버를 뜻한다.
    주키퍼(zookeeper)는 이러한 분산 메세지 큐의 정보를 관리해 주는 역할을 한다.
    kafka를 띄우기 위해서는 주키퍼가 반드시 실행되어야 한다.
    3대 이상의 브로커로 클러스터를 구성한다.

  • 주키퍼의 역할 : 메타데이터(브로커id, 컨트롤러id 등) 저장
    추후에는 주키퍼와 연동하지 않도록 구성할 예정 → 메타데이터를 브로커 안에 저장

  • n개 브로커 중 1대는 Controller기능을 수행한다.

Controller : 각 브로커에게 담당파티션 할당 수행, 브로커 정상 동작 모니터링 관리
누가 Controller인지는 zookeeper에 저장


토픽과 파티션

토픽(Topic)

토픽은 데이터를 구분하기 위해 사용하는 단위입니다. RDBMS의 테이블과 같은 개념이기도 합니다.
토픽에는 한개 이상의 파티션이 존재하는데 파티션 내부에는 프로듀서로부터 받은 데이터를
보관하고 있고 카프카에서는 이런 데이터들을 레코드 라고 부릅니다.

  • 메시지는 파티션에 추가되며 맨 앞에서부터 끝까지 순서대로 읽을 수 있다.
  • 하나의 토픽은 여러개의 파티션을 갖지만, 메시지 처리 순서는 토픽이 아닌 파티션별로 관리된다.
  • 각 파티션은 서로 다른 서버에 분산될 수 있다.
  • 파티션에 수록된 각 메시지는 고유한 오프셋을 갖는다.

https://engkimbs.tistory.com/691

0개의 댓글

관련 채용 정보