📌 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 |