본문 바로가기

카테고리 없음

Apache Kafka 아파치 카프카

1. 카프카란?

Apache Kafka is a distributed event store and stream-processing platform. 

2. 토픽이란

데이터가 들어갈 수 있는 공간을 토픽이라고 한다. 
데이터베이스의 테이블이나 파일 시스템의 폴더와 유사하다.

키를 지정하지 않으면, 라운드 로빈으로 데이터가 나눠져서 들어간다.
키를 지정하면, 키의 해시값으로 파티션을 구해서 분배한다.

파티션을 늘리는 것은 가능하지만, 줄이는 것은 불가능하다.

레코드가 저장이 되는 시간을 지정할 수 있다.

3. 카프카 브로커

카프카가 설치되어 있는 서버 단위
3개 이상의 브로커를 구성하는 것을 권장한다.

replication의 수만큼 복제의 수가 존재한다.
최대 broker의 개수만큼 replication이 될 수 있다.

ISR (in sync replica)

고가용성을 위해서 사용한다.
카프카가 어떤 이유에서 장애가 나게 되면, follower partition이 leader를 승계하게 된다. 

ack
0,1, all 중에 하나를 선택할 수 있다.

0은 ack을 안받는다. 속도는 빠르지만 유실의 가능성이 있다.
1은 ack을 받는다.
all 모든 follower partition 에 저장되었는지 확인한다.

replication의 개수가 많아지면 리소스 사용도 비례해서 증가하기 때문에 적절한 replication의 수를 유지하는 것이 중요하다.

4. 파티셔너(Partitioner)

프로듀서가 데이터를 보내면 파티셔너를 통해서 메세지가 전달된다.

hash(메시지 키) = 파티션 번호
동일한 메시지 키는 같은 파티션에 들어가는 것이 보장된다.

동일한 파티션에 순서대로 들어가게 된다.
파티션 한개의 내부에서는 큐처럼 순서대로 처리한다.

메시지 키가 없으면, 라운드로빈 방식으로 전달된다.

Partitioner interface를 구현하여, 어느파티션에 메세지를 보낼지 결정할 수 있다.

5. Lag

모니터링 지표이다.

파티션에 들어간 데이터는 오프셋이 붙게된다.
프로듀서는 계속 데이터를 넣게 되고, 컨슈머는 데이터를 계속 가져간다.

Lag는 컨슈머가 마지막으로 읽은 offset과 프로듀서마 마지막으로 넣은 offset의 차이다.
토픽에 여러파티션이 존재하면, 파티션마다 lag이 존재한다.

현업에서 lag를 모니터링하면서 처리 속도가 충분한지 가늠할 수 있다.

6. Lag을 모니터링 tool Burrow

kafkaConsumer 객체를 통해 lag을 확인하는 것이 가능하나, 좋지 않은 방법이다.
linkedin에서는 카프카 lag을 효과적으로 monitoring할 수 있도록 Burrow라는 tool을 개발했다.

Burrow 3가지 큰 특징이 있다.

카프카 클러스터가 여러개라도 Burrow하나로 모니터링이 가능하다.
Status로 제공한다.
Http API로 상태를 제공하고 있다.

7. 메세징 플랫폼간 차이

메세지 브로커와 이벤트 브로커의 차이

메세지 브로커
미들웨어 아키텍처로 사용되고 있다.
메시징 플랫폼, 인증 플랫폼 같은 것들이 미들웨어이다.
메시지를 받아서 적절히 처리하고 나면 짧은 시간내에 메시지가 삭제가된다.

이벤트 브로커는 메시지를 삭제하지 않는다.

 

반응형