본문 바로가기
공부

Kafka는 무엇일까요

by GGT 2020. 10. 13.

뭐든지 전달해주겠다는 느낌의 로고

Kafka는 아파치 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트이다.  이 프로젝트는 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표이다.

- 위키백과

 

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.

- Kafka Docs

 

 

위키와 공식 문서를 종합해보았을 때

대략적으로 실시간/스트리밍 데이터를 고성능으로 처리하고 분석하기 위한 분산 플랫폼이라는 것을 알 수 있다.

 

아파치에서는 카프카를 단순 메시지 브로커라기 보다는 이벤트 스트리밍 플랫폼이라고 칭하고 있다.

 

이 설명을 간단히 요약하자면

스트림한 이벤트(혹은 데이터)를 Pub-Sub하고

처리하는데 실패 시 복구가 가능하게끔 durably, reliably하게 저장한다고 한다.

 

[Kafka 구조]

z

주요 키워드

 

- Producer : 데이터 Sender이며 특정 Topic으로 메시지를 전달

- Consumer : 데이터의 Receiver

- Consumer Group : 하나의 토픽만을 담당하는 그룹, 토픽 내 메시지의 순서를 관리함

- Broker : 카프카 서버를 의미

- Topic : 메시지 큐의 단위 - 해당 토픽을 Sub 중인 Consumer에게만 메시지가 전달

- Partitions : Topic 내 메시지가 저장되는 분산 단위

 

 

이전 프로젝트에서 RabbitMQ를 사용해본 경험이 있는데 확실히 Kafka와 RabbitMQ는 비슷한 특징을 가지고 있다.

하지만 두 시스템의 차이점이라면 처리 속도면에서도 Kafka가 월등하지만

Consumer에게 메시지를 전달해주는 로직이 정반대의 성향을 가지고 있다.

 

기존에 많이 사용되던 RabbitMQ의 경우에는 Broker가 Consumer에게 메시지를 Push하는 방식으로

자칫 Consumer의 처리속도보다 더 많은 메시지가 Push될 경우 문제가 발생할 수 있는데

 

Kafka의 경우에는 Consumer가 Pull하는 방식이므로 과도한 메시지가 몰려드는 것을 방지할 수 있다.

 

 

 

 

 

반응형

'공부' 카테고리의 다른 글

Kafka의 파티션  (0) 2020.10.21
스프링 에러 : class doesn't contain matching constructor for autowiring  (0) 2020.06.19
기사 필기 합격!!  (0) 2020.06.06
머지 소트  (0) 2020.06.02
퀵소트  (0) 2020.05.31

댓글