Broker
- Producer와 Consumer가 각각 메시지를 주고 받을 수 있도록 중간 매개하는 역할
- 카프카 애플리케이션이 설치되어 있고, 메시지가 실제로 저장되고 관리되는 서버. 한마디로 카프카 서버.
- 주키퍼 에 의해 각 노드가 모니터링 됨
-
토픽 을 기준으로 메시지를 관리함
- 토픽은 파티션 형태로 쪼개져 있으며, 각 파티션에 들어가는 레코드 즉 메시지는
키(key)
+값(value)
+타임스탬프(timestamp)
로 이루어져 있다고 보면 된다.
- 토픽은 파티션 형태로 쪼개져 있으며, 각 파티션에 들어가는 레코드 즉 메시지는
Producer
- 메시지를 송신하는 역할을 하는 서버 혹은 애플리케이션
- 메시지를 생산해서 토픽 을 지정해 Broker에 전달한다.
- 한 토픽에 대해 여러 프로듀서가 접근 가능하다.(멀티 프로듀서)
-
프로듀서에는
ack
라는 옵션이 있으며0
,1
,all
중 선택 가능하다.ack=0
: 프로듀서가 리더 파티션에 데이터를 전송하면 그걸로 만족한다.ack=1
: 프로듀서가 리더 파티션에 데이터를 전송한 후, 리더 파티션이 받았는지를 체크해야 만족한다.ack=all
: 프로듀서가 리더 파티션에 데이터를 전송한 후, 모든 파티션이 받았는지(리더 파티션이 받은 후 팔로워 파티션에 Replication 까지 완료되었는지)까지 체크해야 만족한다.- 위 내용에 대해서는 [(5) Replication과 ISR]에서 다루는 Replication 이라는 개념을 참고하자
Consumer
- 메시지를 수신하는 역할을 하는 서버 혹은 애플리케이션
- Broker를 polling해서 특정 토픽 으로부터 메시지를 가져온다.
- 한 토픽에 대해 여러 컨슈머가 접근 가능하다.(멀티 컨슈머)
[참고자료]
고승범 외(2018), 카프카: 데이터 플랫폼의 최강자, 책만.