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 구조]
주요 키워드
- 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 |
댓글