kafka란 무엇인가
- 오픈소스 메시징 서버
- 일반적으로 메시징 서버는 아래와 같은 구성으로 이루어짐
- 데이터 단위를 보내는 Publisher(혹은 Producer)
- 데이터를 저장하는 저장소(topic)
- 데이터를 가져가는 Subscriber(혹은 Consumer)
- 중앙에 메시징 서버를 두고 메시지를 Publish/Subscribe하는 Pub/Sub 모델의 통신 사용
Kafka의 특징
교환기가 없는 메시징 시스템
- Producer가 보낸 데이터를 Consumer가 모니터링 하는 queue에 저장하기 위한 교환기를 사용하지 않음
- 교환기의 큐 관리, 데이터 정합, 전달 결과 관리 등의 복잡한 프로세스로 인한 부하 집중을 없앨 수 있음
- Kafka는 메시지 교한 전달의 신뢰성 관리를 Producer와 Consumer에게 맡기고, 교환기의 기능을 Consumer가 만들 수 있게 함
프로듀서와 컨슈머의 분리
- polling 시스템으로는 데이터가 많아지면 수집과 처리시간이 늦어지는 문제 발생
- Producer와 Consumer를 완벽하게 분리하는 Pub/Sub 구조 채용
멀티 프로듀서, 멀티 컨슈머
- 하나의 topic의 여러 Producer와 Consumer가 접근 가능
- 하나의 Producer는 여러 topic에 메시지를 보낼 수 있음
- 하나의 Consumer는 여러 topic에서 메시지를 가져갈 수 있음
디스크에 메시지 저장
- 다른 메시징 시스템과는 다르게 디스크에 메시지를 저장하고 유지
- 일반적인 메시징 시스템에서는 Consumer가 메시지를 읽어가면 queue에서 삭제
- Kafka는 설정한 보간 주기 동안 디스크에 메시지 저장
- Consumer의 처리가 늦어지더라도 디스크에 메시지가 저장되어 있기 때문에 손실 없이 가져갈 수 있음
확장성
- Kafka는 확장이 용이하도록 설계되어 있음
- 확장 작업은 카프카 서비스 중단 없이 가능
Kafka 용어 정리
- 브로커(broker) : Kafka가 설치되어 있는 서버 또는 노드
- 토픽(topic) : Kafka로 들어오는 메시지를 구분하기 위한 네임
- 파티션(partition) : 병렬처리가 가능하도록 topic을 나눌 수 있고, 많은 양의 메시지 처리를 위해 파티션 수를 조절
[reference]
카프카, 데이터 플랫폼의 최강자 - 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지
정보에 감사드립니다.