[kafka] ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ข…๋ฅ˜์™€ ์ปจ์Šˆ๋จธ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

2024. 5. 4. 01:19ใ†Backend/๐Ÿ”— Kafka

 

๊ฐœ์š”

์นดํ”„์นด ์ปจ์Šˆ๋จธ๋Š” ๋ธŒ๋กœ์ปค์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์™€ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ๋งก๋Š”๋‹ค. ๊ฐœ๋ณ„ ์ปจ์Šˆ๋จธ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด์—์„œ ์–ด๋–ค ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜๊ณผ ๋งค์นญ๋˜๋Š”์ง€๋ฅผ ํŠน์ • ์ „๋žต์— ๋”ฐ๋ผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํŠน์ • ์ปจ์Šˆ๋จธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์ปจ์Šˆ๋จธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋˜ ํŒŒํ‹ฐ์…˜์„ ๊ทธ๋ฃน ๋‚ด ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ์—๊ฒŒ ๋งค์นญํ•ด์•ผ ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ '๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ' ๊ณผ์ •์€ ์•„๋ž˜์˜ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์‹ ๊ทœ ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€ ๋  ๋•Œ

2. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๊ธฐ์กด ์ปจ์Šˆ๋จธ๊ฐ€ ์ดํƒˆํ•  ๋•Œ

3. ํ† ํ”ฝ์— ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ (์ถ”๊ฐ€/๊ฐ์†Œ)

4. ์ปจ์Šˆ๋จธ๊ฐ€ ๊ตฌ๋…ํ•˜๋Š” ํ† ํ”ฝ์ด ๋ณ€๊ฒฝ๋  ๋•Œ

 

(๋ฌผ๋ก  ์Šคํƒœํ‹ฑ ๋ฉค๋ฒ„์‹ญ์„ ์ ์šฉํ•˜๋ฉด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ์ดํƒˆ ํ›„ ์žฌํ•ฉ๋ฅ˜ํ•ด๋„ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.)

 

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์„ ๋‹จ์ˆœํžˆ ์ปจ์Šˆ๋จธ์˜ ๋‹ด๋‹น ํŒŒํ‹ฐ์…˜์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๊ธฐ์—” ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.

- ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์ปจ์Šˆ๋จธ๋Š” ๋ธŒ๋กœ์ปค๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•œ๋‹ค. ํ”„๋กœ๋“€์„œ๋Š” ์ง€์†์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๋งŒํผ Lag ์ด ๋ฐœ์ƒํ•œ๋‹ค. 

- ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ณผ์ •์—์„œ ํŒŒํ‹ฐ์…˜์˜ ์–ด๋Š ์œ„์น˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๊ฐ ์ปจ์Šˆ๋จธ์—๊ฒŒ ํŒŒํ‹ฐ์…˜์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ์ž‘์—…์œผ๋กœ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•˜์—ฌ ์‹œ์Šคํ…œ์— ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต 4๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

 

 

์ปจ์Šˆ๋จธ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

 

ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด๋ž€ ์นดํ”„์นด ์ปจ์Šˆ๋จธ๊ฐ€ ๊ตฌ๋…ํ•˜๋Š” ๋Œ€์ƒ ํ† ํ”ฝ ์ค‘ ์–ด๋Š ํŒŒํ‹ฐ์…˜์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค. ์ด 4๊ฐ€์ง€ ์ „๋žต์ด ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์„ค์ •๋œ ์ „๋žต์— ๋”ฐ๋ผ ์ปจ์Šˆ๋จธ-ํŒŒํ‹ฐ์…˜ ๊ฐ„์˜ ๋งค์นญ์ด ๊ฒฐ์ •๋œ๋‹ค. ์ฆ‰ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋™์ž‘์€ ์ปจ์Šˆ๋จธ(๋ฆฌ๋”)๊ฐ€ ๊ด€์žฅํ•œ๋‹ค.

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์€ ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค. 

 

Eager Rebalance

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ์ปจ์Šˆ๋จธ ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ชจ๋“  ์ž‘์—…์„ ๋ฉˆ์ถ”๊ณ  ๋‹ค์‹œ ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฆ‰ ํ•ด๋‹น ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ์ž‘์—…์ด ์ผ์‹œ ์ •์ง€๋˜๊ณ  ํŒŒํ‹ฐ์…˜์„ ์žฌ๋ถ„๋ฐฐํ•œ ํ›„ ๋‹ค์‹œ ๋™์ž‘ํ•œ๋‹ค. ์ด ์‹œ๊ฐ„๋™์•ˆ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ์œ ํœด ์ƒํƒœ๊ฐ€ ๋˜์–ด ๋ฉ”์‹œ์ง€ ์ปจ์Šˆ๋ฐ๊ณผ ์˜คํ”„์…‹ ์ปค๋ฐ‹์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 

figure01

 

1. Detection ๋‹จ๊ณ„์—์„œ consumer02 ์˜ ์žฅ์• ๋ฅผ ๊ฐ์ง€ํ•˜๋ฉด,

2. Stopping ๋‹จ๊ณ„์—์„œ ์ปจ์Šˆ๋จธ์—๊ฒŒ ํ• ๋‹น๋œ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋˜ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ์˜ connection ๋„ ๋Š๊ธฐ๊ฒŒ ๋œ๋‹ค.(์—ฐ๋Œ€ ์ฑ…์ž„ ์œ ๋…ธ) ์ด ๋•Œ ๋ถ€ํ„ฐ ์ปจ์Šˆ๋จธ์—๊ฒŒ ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜์ด ์—†์œผ๋ฏ€๋กœ ์ปจ์Šˆ๋จธ์˜ ๋‹ค์šดํƒ€์ž„์ด ์‹œ์ž‘๋œ๋‹ค.

3. Restart ๋‹จ๊ณ„์—์„œ ๊ตฌ๋…ํ•œ ํŒŒํ‹ฐ์…˜์ด ์ปจ์Šˆ๋จธ๋“ค์—๊ฒŒ ์žฌํ• ๋‹น๋œ๋‹ค. ์ด ์ˆœ๊ฐ„ ๋ถ€ํ„ฐ ์ปจ์Šˆ๋จธ๋“ค์€ ๊ฐ์ž ์žฌํ• ๋‹น๋ฐ›์€ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ปจ์Š˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. 

 

figure01 ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ธฐ์กด์— consumer02 ์™€ ๋งค์นญ๋๋˜ partition1 ์€ consumer01 ๋กœ ์žฌํ• ๋‹น๋๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ดํ›„์—๋Š” ์ปจ์Šˆ๋จธ๊ฐ€ ์ด์ „์— ๊ฐ€์กŒ๋˜ ํŒŒํ‹ฐ์…˜์„ ๋ฐ˜๋“œ์‹œ ๋‹ค์‹œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

Cooperative Rebalance

Cooperative Rebalancing ์€ Apache Kafka 2.4 ๋ฒ„์ „๋ถ€ํ„ฐ ๋„์ž…๋œ ์ง„๋ณด๋œ ํ˜•ํƒœ์˜ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹์œผ๋กœ, ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ์ค‘์ง€ ์—†์ด ํŒŒํ‹ฐ์…˜ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. 

๊ธฐ์กด์— ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜์„ ์ƒˆ๋กญ๊ฒŒ ๋“ค์–ด์˜ค๋Š” ์ปจ์Šˆ๋จธ์—๊ฒŒ ์–‘๋„ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•œ๋‹ค. 

 

figure02

 

1. Detection ๋‹จ๊ณ„ - ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— Consumer02 ๊ฐ€ ํ•ฉ๋ฅ˜ํ•˜๋ฉฐ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ํŠธ๋ฆฌ๊ฑฐ ๋œ๋‹ค. ๊ทธ๋ฃน ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ์กฐํ•ฉํ•ด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ฆฌ๋”์—๊ฒŒ ์ „์†กํ•œ๋‹ค. 

2. First Rebalancing - ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ฆฌ๋”๋Š” ํ˜„์žฌ ์ปจ์Šˆ๋จธ๊ฐ€ ์†Œ์œ ํ•œ ํŒŒํ‹ฐ์…˜ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ์ œ์™ธํ•  ํŒŒํ‹ฐ์…˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ •๋ณด๋ฅผ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋ฉค๋ฒ„๋“ค์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ •๋ณด๋ฅผ ๋ฐ›์€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋ฉค๋ฒ„๋“ค์€ ํ•„์š”์—†๋Š” ํŒŒํ‹ฐ์…˜์„ ๊ณจ๋ผ ์ œ์™ธํ•œ๋‹ค. ์ด์ „์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ •๋ณด์™€ ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ •๋ณด๊ฐ€ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋–ค ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

3. Second Rebalancing - ์ œ์™ธํ•œ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์„ ์œ„ํ•ด ์ปจ์Šˆ๋จธ๋“ค์€ ๋‹ค์‹œ ํ•ฉ๋ฅ˜ ์š”์ฒญ์„ ์ „์†กํ•œ๋‹ค. ์ด ๋•Œ ๋‘ ๋ฒˆ์žฌ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ํŠธ๋ฆฌ๊ฑฐ ๋œ๋‹ค. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋Ÿฌ๋””๋Š” ์ œ์™ธ๋œ ํŒŒํ‹ฐ์…˜์„ ์ ์ ˆํ•œ ์ปจ์Šˆ๋จธ์—๊ฒŒ ํ• ๋‹นํ•œ๋‹ค.

 

Cooperative ๋ฐฉ์‹์˜ ์ค‘์š”ํ•œ ์ ์€ ํŒŒํ‹ฐ์…˜ ์žฌ๋ฐฐ์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ปจ์Šˆ๋จธ๋Š” ๋‹ค์šดํƒ€์ž„ ์—†์ด ๊ณ„์† ๋™์ž‘ํ•˜๋ฉฐ, ๋‘๋ฒˆ์˜ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ์ผ์–ด๋‚ฌ๋‹ค๋Š” ์ ์ด๋‹ค. ๋น„๋ก ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋™์ž‘์ด 2๋ฒˆ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ •์ƒ ๋™์ž‘ํ•˜๋Š” ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ์—๊ฒŒ๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•˜๋‹ค.

Eager ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ์ „์ฒด๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์ด ์•ˆ์ •์ ์ธ ์ƒํƒœ๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ ๋ช‡ ๋ฒˆ์˜ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ธ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด Cooperative ๋ฐฉ์‹์€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ์ค‘๋‹จ๋˜๋Š” ์ƒํ™ฉ์„ ํ”ผํ•ด์•ผํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ „์ฒด ๊ทธ๋ฃน์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์„ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

 

1. ๋ ˆ์ธ์ง€ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

figure03

 

Apache Kafka 2.3 ๋ฒ„์ „๊นŒ์ง€ ๋””ํดํŠธ๋กœ ์„ค์ •๋œ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด๋‹ค. ๋ ˆ์ธ์ง€ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋œ๋‹ค.

1. ๊ตฌ๋… ์ค‘์ธ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜๊ณผ ์ปจ์Šˆ๋จธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•œ๋‹ค.

2. ๊ฐ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ›์•„์•ผ ํ•  ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ, ์ด๋Š” ํ•ด๋‹น ํ† ํ”ฝ์˜ ์ „์ฒด ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ์ด ์ปจ์Šˆ๋จธ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค. 

3. ๋งŒ์•ฝ ์ปจ์Šˆ๋จธ ์ˆ˜์™€ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋ฉด ๋ชจ๋“  ์ปจ์Šˆ๋จธ๋Š” ํŒŒํ‹ฐ์…˜์„ ๊ท ๋“ฑํ•˜๊ฒŒ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค (์ผ๋Œ€์ผ ?)

4. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์ปจ์Šˆ๋จธ ์ˆ˜๋กœ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š์œผ๋ฉด, ์•ž ์ˆœ์„œ์˜ ์ปจ์Šˆ๋จธ๋“ค์ด ์ถ”๊ฐ€๋กœ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค. ์ด๋Š” ํŒŒํ‹ฐ์…˜์ด ํ•œ์ชฝ์œผ๋กœ ๋ชฐ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. 

 

consumer01์€ 4๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ํ• ๋‹น๋œ ๋ฐ˜๋ฉด consumer02 ๋Š” 2๊ฐœ์˜ ํŒŒํ‹ฐ์…˜๋ฐ–์— ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค. ๋ถˆ๊ท ํ˜•์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ ์ „๋žต์€ ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ๊นŒ? ์šฐ์„  ์žฅ์ ์„ ์‚ดํŽด๋ณด๋ฉด, ํŠน์ • ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ์ปจ์Šˆ๋จธ์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ •์ƒ ๋กœ๊ทธ์™€ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ๊ฐ๊ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‘ ํ† ํ”ฝ(topic01, topic02)์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋‘ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ๊ฐ™์„ ๋•Œ ๋กœ๊ทธ ํ”„๋กœ๋“€์„œ๊ฐ€ ๋™์ผํ•œ ๋ฉ”์‹œ์ง€key ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์‹œ์ง€๋Š” ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜(ex partition0) ์œผ๋กœ ์ „์†ก๋œ๋‹ค. ๋‘ ํ† ํ”ฝ์˜ partition0 ์€ ๋ชจ๋‘ consumer01 ์—์„œ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ/๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์ ์œผ๋กœ๋Š” ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์ด ๋ถˆ๊ท ํ˜•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์ปจ์Šˆ๋จธ์— ๋ถ€ํ•˜๊ฐ€ ๋ชฐ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ Eager ํ”„๋กœํ† ์ฝœ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐœ์ƒ์‹œ ๋ชจ๋“  ์ปจ์Šˆ๋จธ๊ฐ€ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

2. ๋ผ์šด๋“œ ๋กœ๋นˆ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

 

figure04

 

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด ๋ชจ๋“  ์ปจ์Šˆ๋จธ์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•œ๋‹ค.

Consumer01 ๊ณผ Consumer02 ๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉด์„œ ๋งคํ•‘๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ธ์ง€ ํ• ๋‹น ์ „๋žต๊ณผ ๋‹ฌ๋ฆฌ ๊ท ๋“ฑํ•œ ํŒŒํ‹ฐ์…˜ ๋ถ„๋ฐฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

ํŒŒํ‹ฐ์…˜ ๋งคํ•‘๋œ ์ปจ์Šˆ๋จธ
Topic01-Partition0 Consumer01
Topic01-Partition1 Consumer02
Topic01-Partition2 Consumer01
Topic02-Partition0 Consumer02
Topic02-Partition1 Consumer01
Topic02-Partition2 Consumer02
 

 

๋ผ์šด๋“œ ๋กœ๋นˆ์˜ ์ „๋žต์˜ ์žฅ์ ์€ ๋ชจ๋“  ์ปจ์Šˆ๋จธ์— ๊ท ๋“ฑํ•œ ํŒŒํ‹ฐ์…˜ ๋ถ„๋ฐฐ๊ฐ€ ์ด๋ค„์ง€๊ธฐ์— ์ปจ์Šˆ๋จธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•ด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๋ผ์šด๋“œ ๋กœ๋นˆ ์ „๋žต์˜ ๋ฌธ์ œ์ ์€ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•  ๋•Œ ๋ชจ๋“  ์ปจ์Šˆ๋จธ๊ฐ€ ์ค‘๋‹จ๋œ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ๋งŒ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ชจ๋“  ์ปจ์Šˆ๋จธ์˜ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•˜๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

3. ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

์•ž์„œ ์„ค๋ช…ํ•œ ๋‘ ์ „๋žต์€ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒ ์‹œ ๊ธฐ์กด ๋งคํ•‘์ •๋ณด์™€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋งคํ•‘์ด ๋งบ์–ด์ง„๋‹ค. ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์€ ์ด์™€ ๋‹ฌ๋ฆฌ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๊ธฐ์กด ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•˜๋Š” ์ปจ์Šˆ๋จธ-ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด๋‹ค.

 

์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์€ 2๊ฐ€์ง€ ๋ชฉ์ ์œผ๋กœ ์ปจ์Šˆ๋จธ์— ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹นํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ท ํ˜• ์žกํžŒ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•  ๋•Œ ๋˜๋„๋ก ๊ธฐ์กฑ์˜ ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜ ์ •๋ณด๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ์ค‘ ์ฒซ ๋ฒˆ์งธ ๋ชฉ์ ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด๋ผ ํ•ด์„œ ํ•ญ์ƒ ๊ธฐ์กด ํŒŒํ‹ฐ์…˜๊ณผ ์ปจ์Šˆ๋จธ ๋งคํ•‘์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด ์ด์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š” ์•„๋ž˜์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์žฌํ• ๋‹น ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

- ์ปจ์Šˆ๋จธ๊ฐ„ ์ตœ๋Œ€ ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜ ์ˆ˜์˜ ์ฐจ์ด๋Š” 1

- ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์€ ์ตœ๋Œ€ํ•œ ์œ ์ง€

- ์žฌํ• ๋‹น ๋™์ž‘ ์‹œ ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์€ ์ œ๊ฑฐ

- ํ• ๋‹น๋˜์ง€ ์•Š์€ ํŒŒํ‹ฐ์…˜๋“ค์€ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ปจ์Šˆ๋จธ๋“ค์— ํ• ๋‹น

 

figure05

 

figure05๋Š” ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์˜ ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. Consumer02 ์— ์žฅ์• ๊ฐ€ ์ƒ๊ฒจ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ์ดํƒˆํ•˜๋ฉด ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•œ๋‹ค.  ์ด ์ƒํ™ฉ์—์„œ ๋ผ์šด๋“œ ๋กœ๋นˆ ๋ฐฉ์‹์€ ๋ฉ€์ฉกํžˆ ์ž˜ ๋™์ž‘ํ•˜๋Š” ๋‚˜๋จธ์ง€ ๋‘ ์ปจ์Šˆ๋จธ(Consumer01, Consumer03)๋„ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์— ๋™์ฐธํ•˜์—ฌ ๊ธฐ์กด ํŒŒํ‹ฐ์…˜ ๋งคํ•‘์ด ๋ชจ๋‘ ํ•ด์ œ๋˜๊ณ  ๋‹ค์‹œ ํ• ๋‹น๋œ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ์ „๋žต์€ ์ •์ƒ ๋™์ž‘ํ•˜๋Š” ๋‘ ์ปจ์Šˆ๋จธ์˜ ๋งคํ•‘์€ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•œ์ฑ„ ๋งคํ•‘์ด ํ•ด์ œ๋œ ํŒŒํ‹ฐ์…˜๋งŒ ์žฌํ• ๋‹น๋œ๋‹ค.

 

4. ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

Kafka version 2.4 ๋ถ€ํ„ฐ ๋””ํดํŠธ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์œผ๋กœ ์Šคํ‹ฐํ‚ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต๊ณผ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™์ผํ•˜์ง€๋งŒ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด๋ถ€์˜ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋™์ž‘์€ ํ•œ์ธต ๋” ๊ณ ๋„ํ™” ๋๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ 3๊ฐ€์ง€ ์ „๋žต์€ ๋‚ด๋ถ€์ ์œผ๋กœ EAGER ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐœ์ƒ ์‹œ ๋ชจ๋“  ์ปจ์Šˆ๋จธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ๋…ํ•  ์ˆ˜ ์—†๋Š” Stop the world ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

 

figure06

 

์ด์™€ ๋‹ฌ๋ฆฌ ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค ์ „๋žต์€ COOPERATIVE ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ํ•„์š”ํ•œ ํŠน์ • ํŒŒํ‹ฐ์…˜์—๋งŒ ์ง‘์ค‘ํ•˜๋ฉฐ ๊ทธ ์™ธ์˜ ๋‚˜๋จธ์ง€ ํŒŒํ‹ฐ์…˜๋“ค์€ ์ปจ์Šˆ๋จธ์™€ ๋งคํ•‘์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค. ์ฆ‰ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์˜ ๋ฉ”์‹œ์ง€ ์ปจ์Šˆ๋ฐ๋งŒ ์ค‘๋‹จ๋  ๋ฟ ์ด์™ธ์˜ ํŒŒํ‹ฐ์…˜์€ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ปจ์Šˆ๋ฐ์ด ๋™์ž‘ํ•˜๊ธฐ์— ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ €ํ•ดํ•˜์ง€ ์•Š๋Š”๋‹ค. 

์ด์™€ ๊ฐ™์€ ํŠน์ง• ๋•๋ถ„์— ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค ์ „๋žต์€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ํ™˜๊ฒฝ์— ํŠนํžˆ ์œ ์šฉํ•˜๋ฉฐ ํšจ์œจ์ ์ธ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ •๋ฆฌ

ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต ์„ค๋ช… Rebalancing Protocol
Range Partition Topic ๋ณ„๋กœ ๋™์ผํ•œ Partition์„ ํŠน์ • Consumer์—๊ฒŒ ํ• ๋‹น EAGER
Round Robin Partition ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Partition๊ณผ Consumer๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ• ๋‹น EAGER
Sticky Partition Consumer๊ฐ€ ๊ตฌ๋… ์ค‘์ธ Partition์„ ๊ณ„์† ์œ ์ง€ํ•˜๊ฒŒ ๋” ํ• ๋‹น EAGER
Cooperative Sticky Partition Sticky์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ „์ฒด Rebalancing์ด ์•„๋‹Œ ํ•„์š”ํ•œ Partition๋ผ๋ฆฌ ์ ์ง„์ ์œผ๋กœ Rebalancing ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. COOPERATIVE

 

 

 

Ref

- https://devocean.sk.com/community/detail.do?ID=165478&boardType=DEVOCEAN_STUDY&page=1

'Backend > ๐Ÿ”— Kafka' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Kafka] Avro ์•Œ์•„๋ณด๊ธฐ  (0) 2024.03.04
[Kafka ์—๋Ÿฌ] LEADER_NOT_AVAILABLE  (0) 2024.01.04