All Articles

Kafka - (2) Producer, Broker, Consumer

Broker

  • Producer와 Consumer가 각각 메시지를 주고 받을 수 있도록 중간 매개하는 역할
  • 카프카 애플리케이션이 설치되어 있고, 메시지가 실제로 저장되고 관리되는 서버. 한마디로 카프카 서버.
  • 주키퍼 에 의해 각 노드가 모니터링 됨
  • 토픽 을 기준으로 메시지를 관리함

    • 토픽은 파티션 형태로 쪼개져 있으며, 각 파티션에 들어가는 레코드 즉 메시지는 키(key) + 값(value) + 타임스탬프(timestamp)로 이루어져 있다고 보면 된다.

Producer

  • 메시지를 송신하는 역할을 하는 서버 혹은 애플리케이션
  • 메시지를 생산해서 토픽 을 지정해 Broker에 전달한다.
  • 한 토픽에 대해 여러 프로듀서가 접근 가능하다.(멀티 프로듀서)
  • 프로듀서에는 ack라는 옵션이 있으며 0, 1, all 중 선택 가능하다.

    1. ack=0: 프로듀서가 리더 파티션에 데이터를 전송하면 그걸로 만족한다.
    2. ack=1: 프로듀서가 리더 파티션에 데이터를 전송한 후, 리더 파티션이 받았는지를 체크해야 만족한다.
    3. ack=all: 프로듀서가 리더 파티션에 데이터를 전송한 후, 모든 파티션이 받았는지(리더 파티션이 받은 후 팔로워 파티션에 Replication 까지 완료되었는지)까지 체크해야 만족한다.
    4. 위 내용에 대해서는 [(5) Replication과 ISR]에서 다루는 Replication 이라는 개념을 참고하자

Consumer

  • 메시지를 수신하는 역할을 하는 서버 혹은 애플리케이션
  • Broker를 polling해서 특정 토픽 으로부터 메시지를 가져온다.
  • 한 토픽에 대해 여러 컨슈머가 접근 가능하다.(멀티 컨슈머)

[참고자료]
고승범 외(2018), 카프카: 데이터 플랫폼의 최강자, 책만.


이전 글

(1) Kafka란?

다음 글

(3) 관련 인프라