주로 실시간 데이터 피드의 빅데이터 처리를 위해 사용한다.
대용량 데이터를 실시간으로 처리 및 분석할 수 있고, 데이터를 수집하고 이를 통합할 수도 있다.
Kafka는 데이터 손실 없이 안정적으로 데이터를 저장할 수 있다.
Kafka는 데이터를 여러 브로커에 복제해서 저장하므로 신뢰성이 높다.
여러 브로커에 복제 후 저장하게되면 어느 한 브로커가 장애로 데이터가 손실되더라도 나머지 브로커의 데이터가 남아있기 때문에 신뢰성에서 유리하다.
클러스터링을 통해 여러 노드에서 데이터를 분산처리할 수 있다는 장점이 있다.
관리 도구를 통해 상태를 모니터링할 수 있다.
복잡하다.
높은 트래픽 상황에서 오버헤드가 발생할 수 있다.
장점과 단점은 rabbitMQ와 유사한것을 알 수 있다.
장점 및 단점과 마찬가지로 구성요소에서 또한 rabbitMQ와 비슷한 모습을 보인다.
첫번째로 kafka를 통해 전달되는 데이터의 단위는 메시지
로 동일하다.
차이점이 있다면 kafka의 메시지는 키
, 값
, 타임스탬프
등으로 이루어져있다.
메시지를 생성하는 역할은 동일하게 프로듀서가 수행한다.
kafka는 rabbitMQ의 큐처럼 토픽
이라는 장소에 메시지들을 저장한다.
추가로 토픽이라는 공간은 파티션으로 작게 쪼개질 수 있으며 병렬처리가 가능하다.
키라는 의미가 새롭게 등장한다.
kafka에서 key는 메시지를 특정 파티션에 할당하는데에 사용된다.
동일한 키를 가진 메시지는 항상 동일한 파티션에 저장된다.
(307호 집 열쇠를 가진 사람은 307호로만 들어갈 수 있듯!)
토픽에서 메시지를 처리하는 역할은 rabbitMQ 와 동일하게 컨슈머가 수행한다.
Kafka 클러스터의 각 서버는 브로커
라고 한다. 메시지를 저장 및 전송하는 역할을 한다.
Zookeeper라는 개념이 등장한다.
Kafka를 관리하고 조정하는 서비스라고 생각하면 된다.
추가 공부 : Kafka 2