-
[Kafka] Partition Ownership 알아보기Kafka 2024. 1. 5. 06:12728x90반응형
- 목차
소개.
Partition Ownership 은 어떤 Partition 을 소비할 수 있는 Consumer 가 누구인지를 지칭하는 표현입니다.
예를 들어, 아래와 같은 Topic 과 Consumer Group 의 관계가 있다고 생각해보겠습니다.
이때에 Consumer 1 은 Partition 1 의 Ownership 을 가집니다.
그리고 Consumer 2, 3, 4 또한 Partition 2, 3, 4 의 Ownership 을 가집니다.
Partition Ownership 의 범위는 Consumer Group 으로 제한합니다.
Consumer Group 의 Consumer 마다 Partition Ownership 을 가지며,
Partition Ownership 을 가지는 Consumer 가 Topic 의 Partition 을 소비할 수 있습니다.
Partition Ownership 에 대한 정보는 __consumer_offsets Topic 에 저장되어 있습니다.
그리고 Consumer Group 의 Leader 인 Coordinator 는 __consumer_offsets Topic 의 정보를 기반으로
Partition Assignment 를 수행합니다.
이어지는 내용에서 Group Coordinator, Consumer Group Leader 등에 대해서
자세히 알아보도록 하겠습니다.
Consumer Group Leader.
Consumer Group Leader 는 Consumer 들 중의 하나입니다. Group Leader 가 결정되는 방식은 선착순인데요.
Consumer 는 Broker 에게 JoinGroup Request 를 전달하여 Consumer Group 의 생성과 합류를 요청합니다.
이러한 JoinGroup 요청은 모든 Consumer 들에 의해서 수행되며,
제일 먼저 요청한 Consumer 가 Consumer Group 의 Leader 가 됩니다.
아래 그림처럼 Consumer 1 이 첫번째로 JoinGroup 을 요청하게 된다면, Consumer 1 이 Group Leader 가 됩니다.
Kafka Broker 들 중의 Controller 처럼 Consumer Group Leader 또한 하나의 Consumer 입니다.
그래서 Topic 의 Partition 을 소비하는 Consumer 로써의 역할과 Leader 로써의 역할을 겸합니다.
즉, 학급의 반장과 같은 역할이죠. 공부도 해야하고 학생들의 리더가 되어야합니다.
Consumer Group Leader 는 Group Coordinator 와 소통하며 Partition - Consumer 의 매칭 정보를 생성합니다.
이것은 Kafka 의 중요한 원칙인데요. Client 에게 많은 책임과 역할을 부여합니다.
Client-Side 에서 Partition 과 Consumer 의 매칭 정보를 Group Coordinator 에게 제공하고,
Group Coordinator 인 Broker 는 그 실행 정보를 실행시키기만 합니다.
Group Coordinator.
Group Coordinator 는 Consumer Group 의 Partition Ownership 을 설정하고, 관리하는 역할을 수행합니다.
Partition <-> Consumer 간의 매칭하는 작업을 수행하죠.
그리고 Group Coordinator 는 여러 Broker 들 중의 하나입니다.
즉, Group Coordination 은 Kafka Broker 의 역할 중의 하나인 것이죠.
Consumer Group 마다 Group Coordination 을 수행하는 Broker 는 달라질 수 있습니다.
아래 이미지처럼 각 Consumer Group 을 Coordination 하는 Broker 는 달라집니다.
이렇게 Group Coordinator 는 Consumer Group 내부의 Consumer 들과 Partition 을 연결하게 됩니다.
반응형'Kafka' 카테고리의 다른 글
[Kafka-Streams] KStream 알아보기 (0) 2024.01.06 [Kafka] ProducerInterceptors 알아보기 (0) 2024.01.05 [Kafka] Log Index File 알아보기 (0) 2024.01.03 [Kafka] listeners, advertised.listeners 알아보기 (2) 2024.01.01 [Kafka] Partition Leader Election 알아보기 (파티션 리더 선출) (0) 2023.12.31