티스토리 뷰
카프카에서 Topic의 Partition을 Consumer에게 어떻게 할당할 것인지에 대한 전략.
(주요 참고 내용은 아래 링크 블로그를 참고 함)
https://medium.com/streamthoughts/understanding-kafka-partition-assignment-strategies-and-how-to-write-your-own-custom-assignor-ebeda1fc06f3
나중에 수정될지는 모르겠지만 읽고 특징과 단점을 정리
1. Range Assignor
Consumer member_id를 lexicographic (사전식)으로 정렬한 뒤, Topic의 각 Partition을 Numeric순으로 Consumser에게 할당한다.
문제점으로 보이는 부분은 같다.
- Topic의 Partition갯수만큼 Consumer가 필요
- Consumer 숫자보다 Topic Partition수가 적은 경우 lexicographic 정렬상 뒷쪽에 오는 Consumer들은 자원을 유휴상태로 낭비하는 경우가 많게 될 것으로 보인다.
2. Round Robin Assignor
Round Robin은 전체 Consumer에 대해서 Topic/Partition들을 순차적으로 분배하는 방식으로, Range에 비해서 Consumer 활용을 극대화 한다는 장점이 있다.
반면, 위에서 참고한 블로그에서 보면, Consumer중 하나가 종료되는 경우에, 서로 다른 Broker에 존재하는 동일 Topic의 Parition이 한 Consumer에 몰리는 경우가 생겨, Partition 처리의 장점을 상쇄시켜 버리는 결과가 발생하기도 한다.
3. StickyRoundRobinAssignor
Round Robin과 기본적으로 동일하나, Consumer가 종료시에 Partition 이동을 최소화 시키도록 변형된 것이다.
Round Robin은 Consumer 종료시 전체 재배치를 하는 것으로 보인다.
'프로그래밍 > 빅데이터 관련' 카테고리의 다른 글
Telegraf + Influx DB + Grafana on AWS EC2 (0) | 2020.06.25 |
---|---|
ZooKeeper 예제들의 3 node 세팅의 이유 (기초) (0) | 2020.06.12 |
AWS EC2에 Kafka 클러스터(3 node) 구축하기 (기초) (0) | 2020.06.10 |