해당 내용은 '실전 카프카 개발부터 운영까지' 책을 통해 공부하고 정리한 내용입니다.
카프카는 데이터를 받아서 전달하는 데이터 버스 역할을 한다.
카프카에 데이터(메시지) 를 만들어서 주는 쪽을 프로듀서(Producer) 라고 부르며, 카프카에서 데이터(메시지)를 빼내서 소비하는 쪽을 컨슈머(Consumer) 라고 부른다. 그리고 주키퍼는 카프카의 정상 동작을 보장하기 위해 메타데이터를 관리하는 코디네이터라고 할 수 있다.
- 프로듀서 (Producer)
- 데이터(메시지) 를 만들어서 주는 쪽
- 컨슈머 (Consumer)
- 데이터(메시지) 를 받아서 소비하는 쪽
- 쥬키퍼 (Zookeeper)
- 정상동작을 보장하기 위해 메타데이터를 관리하는 코디네이터
프로듀서는 메시지를 카프카로 전송하는 역할을 하고 메시지를 어떻게 보내느냐에 따라 카프카에 메시지가 잘 저장될 수도 손실될 수도 있다. 카프카는 프로듀서와 컨슈머의 중앙에 위치해서 프로듀서로부터 전달받은 메시지들을 저장하고 컨슈머에 메시지를 전달하는 두 가지 역할을 한다. 주키퍼는 카프카의 메타데이터 저장소 역할을 하고 브로커들의 노드 관리 등을 하고 있다. 컨슈머는 카프카에 저장된 메시지를 꺼내오는 역할을 한다. 이때 컨슈머를 통해 다른 애플리케이션으로 데이터를 전송하기도 하고 메시지를 변형하여 다시 카프카로 전송하는 등의 다양한 방법으로 응용해서 사용할 수 있다.
여기서 브로커는 카프카와 다르게 정의할 수 있다. 카프카는 애플리케이션으로 정의할 수 있고 브로커는 애플리케이션이 설치된 서버 또는 노드를 의미한다. 이러한 점이 다르다는 것을 유의해서 사용해야 한다.