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

Kafka를 관리하고 조정하는 서비스라고 생각하면 된다.
추가 공부 : Kafka 2