빅데이터/카프카

카프카 - (1) 개념

_금융덕후_ 2022. 1. 10. 18:00
728x90
반응형

 

 

 

카프카란?
카프카는 파편화된 데이터 수집 및 분배 작업을 위해 링크드인에서 고안된 분산 큐(queue) 시스템이다.
상용 서비스를 개발하다 보면 서비스에서 생겨나는 여러 다른 데이터를 여러 다른 시스템으로 전송하게 된다.
이러한 데이터들을 단일화된 시스템으로 처리하지 않는다면 시스템이 커질수록 관리가 어려워진다.
카프카는 이러한 문제를 하나의 확장 가능한 시스템에서 처리하기 위한 시스템이다.

 

빅데이터 시스템

하둡과 같은 빅데이터 시스템은 주로 두가지의 코어한 개념을 지닌다.
바로 고가용성(High Availability)과 장애허용성(Fault Tolerance) 이다.
빅데이터 시스템을 공부할 때에는 이 두가지 개념을 항상 기억하고 학습하면 도움이 된다.
 

고가용성 (High Availability)

고가용성이랑 시스템에서 장애가 발생하더라도 시스템이 중단되지 않고 데이터를 처리할 수 있는 능력을 말한다.
이는 보통 여러 인스턴스를 사용한 분산 시스템 아키텍쳐로 처리되는 시스템을 말한다.
시스템에 유입되는 트래픽이 늘어나더라도 스케일아웃(scale-out) 방식으로 분산시켜 트래픽을 처리하고,
그 중 일부 인스턴스가 중단되더라도 시스템 전체는 중단되지 않도록 처리할 수 있는 시스템이다.
 

장애허용성 (Fault Tolerance)

장애허용성은 장애가 날 수 있다는 것을 전제로 하는 시스템이다.
장애를 허용한다는 것은 장애가 나도 어렵지 않게 데이터를 복구할 수 있는 것을 말한다.
빅데이터 시스템은 장애를 허용하기 위해 복제(replication)기능을 사용한다.
여려대의 인스턴스의 저장소에 데이터를 여러벌 복제해두고,
장애가 발생하면 복제된 데이터를 통해 장애를 복구하게 된다.

 

카프카 구성 요소

카프카를 구성하는 시스템은 다음과 같이 나뉠 수 있다.
다음의 구성 요소들을 간단하게 알아보도록 한다.
 

카프카 프로듀서

카프카 프로듀서는 메시지 생성자이다.
카프카에게 메시지를 전달하기 위한 모든 주체를 프로듀서라고 부를 수 있다.
이 때 메시지를 생성하는 서비스는 카프카 프로듀서 API를 활용한다.
 

카프카 컨슈머

카프카 컨슈머는 메시지 소비자이다.
카프카로부터 메시지를 꺼내서 활용하는 모든 주체를 컨슈머라고 부를 수 있다.
 

카프카 브로커

카프카 브로커는 프로듀서로부터 발생하는 데이터를 분산 저장 및 처리하여, 안전하게 컨슈머에 전달하는 역할을 한다.
카프카 프로듀서가 브로커에게 특정 토픽의 파티션으로 데이터를 전송 요청하면, 요청한 토픽의 파티션에 데이터를 저장한다.
이때 파티션은 미리 설정된 복제본의 수 만큼 저장하게 된다.
브로커 역시도 고가용성을 가능하게 해야하기 때문에 여러대의 브로커로 구성된다.
보통 카프카는 기본적으로 3대 이상의 브로커를 사용할 것을 권장한다.
 
컨슈머가 특정 토픽의 파티션으로부터 데이터 수신을 요청하면,
브로커는 요청한 토픽의 파티션에서 데이터를 꺼내 전달하게 된다.
카프카는 다른 메시징 플랫폼과는 다르게 컨슈머가 데이터를 가져간 뒤에도
카프카는 토픽의 데이터를 삭제하지 않는다.
오직 브로커만이 데이터 삭제를 수행할 수 있고,
이는 로그 세그먼트라는 특정 파일 단위로 삭제가 이루어 진다.
또한 브로커는 컨슈머가 특정 토픽의 파티션으로부터
어디까지의 레코드를 가져갔는지를 확인하기 위해 오프셋을 기록한다.
이 오프셋은 장애가 났을 때 다시 컨슈머에게 어디서부터 데이터를 전달할지를 결정할 때 활용하게 된다.
 

레코드

카프카로 들어가는 데이터는 레코드라는 단위로 저장/처리 된다.
레코드는 타임스탬프, 메시지 키 (key), 메시지 값 (value), 그리고 오프셋으로 구성된다.
레코드가 브로커로 전송되면 브로커는 레코드의 오프셋과 타임스템프를 지정한 뒤 저장한다.
한번 저장된 레코드는 수정할 수 없고, 브로커는 지정된 리텐션(retention)기간이 지난 레코드나 지정된 저장용량이 초과된 경우에만 데이터를 삭제한다.
 

토픽

카프카 토픽은 레코드를 구분하기 위한 단위이다.
레코드는 애플리케이션에서 지정한 토픽으로 전송되고 처리된다.
 

파티션

파티션은 레코드를 병렬로 처리할 수 있는 단위이다.
파티션은 자료구조의 큐(queue)의 구조와 비슷하게 FIFO구조로 데이터를 처리한다.
하지만 일반적인 큐는 데이터를 소비하면 삭제되지만, 카프카는 그렇지 않다.
이를 통해 여러 컨슈머에서 하나의 토픽에서 여러번 데이터를 가져갈 수 있게 한다.
동일한 키(key)를 가진 레코드는 동일한 파티션으로 전달된다.
728x90
반응형

'빅데이터 > 카프카' 카테고리의 다른 글

카프카 - (5) 컨슈머  (0) 2022.02.07
카프카 - (4) 프로듀서  (0) 2022.01.31
카프카 - (3) 토픽  (0) 2022.01.24
카프카 - (2) 설치  (0) 2022.01.17