-
12 days of Apache Kafka - 3. PartitioningKafka 2021. 1. 17. 10:07
www.youtube.com/watch?v=y9BStKvVzSs
하나의 토픽이 하나의 노드에만 있다면?
확장성 측면에서 문제가 많을 것이다. 노드의 크기만큼만 저장할 수 있게 된다.
경제적인 면으로도 처음부터 엄청 큰 노드를 쓰고 싶지도 않을 것이다.
한 토픽에만 데이터가 몰리고, 읽기와 쓰기가 많다면 하나의 노드에만 엄청난 부하가 몰릴 것이다.Partitioning
위와 같은 상황이 일어나지 않게 카프카는 Partition 을 제공한다.
Partition 은 하나의 토픽(로그) 를 여러 개로 쪼개어 카프카 클러스터의 각각 노드에 저장할 수 있게 한다.또한 어떤 노드에 저장할 지도 결정해준다.
key 가 존재하지 않는 message 라면, round robin 방식으로 저장된다.
key 가 존재한다면, 보통 해쉬 함수를 통해서 어떤 파티션에 저장될 지 결정해준다.
따라서 kafka 는 같은 Key 라면 같은 파티션에 순서를 가지고 저장한다.반응형'Kafka' 카테고리의 다른 글
12 days of Apache Kafka - 6. Producers (0) 2021.01.17 12 days of Apache Kafka - 5. Replication (0) 2021.01.17 12 days of Apache Kafka - 4. Brokers (0) 2021.01.17 12 days of Apache Kafka - 2. Topics (0) 2021.01.17 12 days of Apache Kafka - 1. Introduction (0) 2021.01.17