반응형

공부를 위해 정리한 내용입니다.

 

Kafka는 pub-sub 구조를 가지는 큐이다.

 

Kafka는 프로듀서, 브로커, 컨슈머 이렇게 3개로 이루어져 있고,

프로듀서에서 메시지를 브로커에게 전달하면 전달된 메시지를 컨슈머가 브로커를 통해 가져와 처리하게 된다.

 

Kafka의 처리 흐름을 보면

 

 

 

프로듀서 -> 브로커 <- 컨슈머

로 브로커를 중심으로 프로듀서가 메시지를 브로커에 전달하고, 컨슈머가 브로커에게 가서 메시지를 받아와 처리하는 구조이다.

 

Kafka는 많은 장점을 가지고 있다.

그 중 두드러 지는 장점이 고성능, 고가용성, 확장성 이다.

Kafka는 일반적인 MQ 시스템에서 지원하는 기능들을 배제함으로서 message당 오버헤드를 줄이는 등을 통해 고성능을 확보했다고 한다.

 

 

Kafka는 정해진 시간 동안 브로커가 받은 메시지를 가지고 있기 때문에 컨슈머가 이슈로 정상 동작을 하지 않을 경우 다른 컨슈머가 브로커에 저장된 메시지를 가지고 이어서 작업할 수 있어 가용성이 높다.

 

그리고 Kafka의 브로커는 topic과 partition으로 이루어져있다. 하나의 토픽에 여러 파티션이 있을 수 있고 메시지는 파티션에 저장되게 된다. 브로커가 프로듀서로부터 많은 메시지를 받는 경우 필요시 파티션을 늘려 수신되는 메시지를 분산 시킬 수 있다. 이때 기본 설정은 RR로 동작하게 된다. 이렇게 늘린 파티션에 컨슈머를 추가로 배치하여 수평 확장을 할 수 있다.

 

 

Reference:

Kafka: a Distributed Messaging System for Log Processing (논문)

반응형

+ Recent posts