05.Partition Assignment Strategy
Partition Assignment Strategy
Startegy
Range
RoundRobin
Sticky
CooperativeSticky
Custom
Consumer์ ์ค์ ํ๋ผ๋ฏธํฐ ์ค์์ partition.assignment.strategy ๋ก ํ ๋น ๋ฐฉ์ ์กฐ์
org.apache.kafka.clients.consumer.RangeAssignor Topic๋ณ๋ก ์๋ํ๋ Default Assignor
org.apache.kafka.clients.consumer.RoundRobinAssignor Round Robin ๋ฐฉ์์ผ๋ก Consumer์๊ฒ Partition์ ํ ๋น
org.apache.kafka.clients.consumer.StickyAssignor ์ต๋ํ ๋ง์ ๊ธฐ์กด Partition ํ ๋น์ ์ ์งํ๋ฉด์ ์ต๋ ๊ท ํ์ ์ด๋ฃจ๋ ํ ๋น์ ๋ณด์ฅ
org.apache.kafka.clients.consumer.CooperativeStickyAssignor ๋์ผํ StickyAssignor ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ฅด์ง๋ง ํ๋ ฅ์ ์ธ Rebalance์ ํ์ฉ
org.apache.kafka.clients.consumer.ConsumerPartitionAssignor ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉด ์ฌ์ฉ์ ์ง์ ํ ๋น ์ ๋ต์ ์ฌ์ฉํ ์ ์์
Range Assignor
๊ธฐ๋ณธ Assignor
partition.assignment.strategy ํ๋ผ๋ฏธํฐ์ Default Assignor
๋์ผํ Key๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฉ์์ง๋ค์ ๋ํ Topic๋ค ๊ฐ์ โco-partitioningโ ํ๊ธฐ ์ ๋ฆฌ
์) Delivery ID๋ฅผ key๋ก ๊ฐ์ง๊ณ ์๋ delivery_status ๋ฉ์์ง์ delivery_location ๋ฉ์์ง
Topic์ Partition ๊ฐ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ, Co-partitioning ๊ฐ๋ฅ
Round Robin Assignor
Range ๋ฐฉ์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ถ๋ฐฐํ์ฌ ํ ๋น
Round Robin ๋ฐฉ์์ผ๋ก Partition๋ค๊ณผ Consumer๋ค์ ๋ถ๋ฐฐํ์ฌ ํ ๋น
Reassign(์ฌํ ๋น) ํ Consumer๊ฐ ๋์ผํ Partition์ ์ ์งํ๋ค๊ณ ๋ณด์ฅํ์ง ์์
์) Consumer 0 ์ด ์ง๊ธ Topic0์ Partition0 ์ ํ ๋น๋์ด ์์ง๋ง, ์ฌํ ๋น์ด ๋ฐ์ํ๋ฉด Topic0์ Partition0 ์ด ๋ค๋ฅธ Consumer์๊ฒ ํ ๋น๋ ์ ์์
ํ ๋น ๋ถ๊ท ํ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ ์กด์ฌ
Consumer๊ฐ Subscribe ํด์ค๋ Topic ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, ํ ๋น ๋ถ๊ท ํ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ ์์
3๊ฐ์ Consumer C0, C1, C2 ์ 3๊ฐ์ Topic T0, T1, T2๋ฅผ ๊ฐ์
T0์ Partition 1๊ฐ, T1๋ Partition 2๊ฐ, T2์ Partition 3๊ฐ ๋ฅผ ๊ฐ์
C0์ T0๋ง, C1๋ T0 ๊ณผ T1๋ง, C2์ T0, T1 ๋ฐ T2๋ฅผ Subscribeํ๋ค๊ณ ๊ฐ์
Sticky Assignor
Range ๋ฐฉ์ ๋ณด๋ค Rebalancing ์ค๋ฒํค๋๋ฅผ ์ค์
1. ๊ฐ๋ฅํํ ๊ท ํ์ ์ผ๋ก ํ ๋น์ ๋ณด์ฅ
Consumer๋ค์๊ฒ ํ ๋น๋ Topic Partition์ ์๋ ์ต๋ 1๋งํผ ๋ค๋ฆ
ํน์ Consumer(์, Consumer A)๊ฐ ๋ค๋ฅธ Consumer๋ค(์, Consumer B)์ ๋นํด 2๊ฐ ์ด์ ๋ ์ ์ Topic Partition์ด ํ ๋น๋ ๊ฒฝ์ฐ, A์ ํ ๋น๋ Topic์ ๋๋จธ์ง Partition๋ค์ B์ ํ ๋น๋ ์ ์์
2. ์ฌํ ๋น์ด ๋ฐ์ํ์ ๋, ๊ธฐ์กด ํ ๋น์ ์ต๋ํ ๋ง์ด ๋ณด์กดํ์ฌ ์ ์ง
Topic Partition์ด ํ๋์ Consumer์์ ๋ค๋ฅธ Consumer๋ก ์ด๋ํ ๋์ ์ค๋ฒํค๋๋ฅผ ์ค์
Round Robin ๋ฐฉ์๊ณผ ๋น์ทํ์ง๋ง ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์
3๊ฐ์ Consumer C0, C1, C2 ์ 4๊ฐ์ Topic T0, T1, T2, T3๋ฅผ ๊ฐ์
T0, T1, T2, T3๋ ๋ชจ๋ Partition 2 ๊ฐ๋ฅผ ๊ฐ์
C0, C1, C2 ๋ชจ๋ T0, T1, T2, T3๋ฅผ Subscribeํ๋ค๊ณ ๊ฐ์
C1 ์ด ์ ๊ฑฐ๋๊ณ ์ฌํ ๋น์ด ๋ฐ์ํ๋ค๊ณ ๊ฐ์
ํ ๋น ๋ถ๊ท ํ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ์ค์
Round Robin ๋ฐฉ์์์ ์ค๋ช ํ๋ ํ ๋น ๋ถ๊ท ํ์ด ๋ฐ์ํ๋ ์๋๋ฆฌ์ค๋ ์๋์ ๊ฐ์
3๊ฐ์ Consumer C0, C1, C2 ์ 3๊ฐ์ Topic T0, T1, T2๋ฅผ ๊ฐ์
T0์ Partition 1๊ฐ, T1๋ Partition 2๊ฐ, T2์ Partition 3๊ฐ ๋ฅผ ๊ฐ์
C0์ T0๋ง, C1๋ T0 ๊ณผ T1๋ง, C2์ T0, T1 ๋ฐ T2๋ฅผ Subscribeํ๋ค๊ณ ๊ฐ์
Sticky : ํน์ Consumer(์, Consumer A)๊ฐ ๋ค๋ฅธ Consumer๋ค(์, Consumer B)์ ๋นํด 2๊ฐ ์ด์ ๋ ์ ์ Topic Partition์ด ํ ๋น๋ ๊ฒฝ์ฐ, A์ ํ ๋น๋ Topic์ ๋๋จธ์ง Partition๋ค์ B์ ํ ๋น๋ ์ ์์
Consumer 0 ์ด ์ ๊ฑฐ๋๊ณ ์ฌํ ๋น์ด ๋ฐ์ํ๋ค๊ณ ๊ฐ์
Last updated