본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Kafka_Confluent

[Kafka] Broker & Zookeeper

by iamlucia 2021. 5. 19.

📌 kafka 및 Confluent 를 공부하며 정리하는 글 

Producer와 Consumer는 자동으로

어떤 브로커에 데이터를 write할지, 어떤 브로커의 데이터를 read할지를 알게된다고 하였다.

어떻게 이러한 동작이 가능할까?

Producer 와 Consumer 가 Borker를 발견해내는 방법을 알아보자.

 

1. Broker Discovery

모든 카프카 브로커는 "bootstrap server"라고 하는데,

하나의 broker에 접속만 하면 전체 클러스터에 접속할 수 있다는 것이다.

각 브로커는 모든 브로커뿐만 아니라 토픽, 파티션(metadata)을 알고 있다.

2. Zookeeper

  • 브로커를 관리하며, 브로커의 리스트를 가지고 있다.

  • 각 파티션에 대한 leader 브로커를 선정한다.

  • 새로운 토픽 생성이나 브로커 장애 발생 및 복구 등의 변경 사항이 생기는 경우 카프카에 알람을 보낸다.

  • 카프카는 주키퍼 없이 작동하지 못한다(Confluent에서는 주키퍼의 역할을 점차 축소하는 방향으로 나아가는 중!)

  • 주키퍼 클러스터는 홀수 갯수의 서버로만 동작하도록 설계되어 있다 (3,5,7...)
    이 서버들 중 leader가 write를 관리하며, 나머지 서버는 follower가 되어 read를 관리한다. 

 

💡 Kafka v0.10 부터 consumer offset을 주키퍼에 저장하지 않는다(카프카 토픽에 저장!) 

 

3. Kafka 가 우리에게 보장하는 것

  • 메세지는 보내진 순서대로 토픽/파티션에 append된다.

  • Consumer는 토픽/파티션에 저장된 순서대로 메세지를 read한다.

  • N개의 replication factor가 있는 경우, producer와 consumer는 N-1 개의 브로커에 장애가 생겨도 동작할 수 있다.
    • 만약 3개의 RF가 있는 경우, 1개의 브로커가 유지보수를 위해 내려가고, 또 다른 브로커가 예기치않게 장애가 생겨도 하나의 브로커는 남아 동작할 수 있다는 것이다! 
  • 파티션의 갯수가 하나의 토픽에 대해 일정하게 유지된다면, 동일한 키를 가진 메세지는 계속 동일한 파티션에 할당된다. 

'자기발전소 > # Kafka_Confluent' 카테고리의 다른 글

[Kafka] Consumer Group: Rebalancing  (0) 2021.08.02
[Kafka] Producer 관련 주요 옵션  (0) 2021.05.29
[Kafka] Consumer  (0) 2021.05.19
[Kafka] Producer  (0) 2021.05.19
[Kafka] Topic  (0) 2021.05.19