๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
BackEnd๐ŸŒฑ/Etc

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

by ์•ˆ์ฃผํ˜• 2024. 1. 7.

๊ฐœ์š”

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

  1. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ
  2. ๊ธฐ์กด ์ปจ์Šˆ๋จธ๊ฐ€ ๊ทธ๋ฃน์—์„œ ๋‚˜๊ฐˆ ๋•Œ
  3. ๊ตฌ๋…ํ•˜๋Š” ํ† ํ”ฝ์— ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์ด ์ƒ๊ธธ ๋•Œ
  4. ์ปจ์Šˆ๋จธ๊ฐ€ ๊ตฌ๋…ํ•˜๋Š” ํ† ํ”ฝ์ด ๋ณ€๊ฒฝ๋  ๋•Œ

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

๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์ ์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์€ ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด๊ธฐ์— ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ์Šคํ…œ์— ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์ง€๋งŒ, ์ด๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ๊ทธ์ค‘ 'ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Partition Assignment Strategy(ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต)์ด๋ž€?

'Partition Assignment Strategy'๋Š” ์นดํ”„์นด ์ปจ์Šˆ๋จธ๊ฐ€ ํ† ํ”ฝ์˜ ์–ด๋–ค ํŒŒํ‹ฐ์…˜์„ ์†Œ๋น„ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์ „๋žต์— ๋”ฐ๋ผ ์ปจ์Šˆ๋จธ์™€ ํŒŒํ‹ฐ์…˜ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๊ฒฐ์ •๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํšจ์œจ์„ฑ๊ณผ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์นดํ”„์นด์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์€ ํฌ๊ฒŒ '์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ'๊ณผ 'ํ˜‘๋ ฅ์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ'์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ, ์ด์— ๋”ฐ๋ผ ์•„๋ž˜์˜ 4๊ฐ€์ง€์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. 

  1. ๋ ˆ์ธ์ง€(Range) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต
  2. ๋ผ์šด๋“œ ๋กœ๋นˆ(RoundRobin) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต
  3. ์Šคํ‹ฐํ‚ค(Sticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต
  4. ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค(CooperativeSticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต

๊ฐ๊ฐ ์„ธ์„ธํ•˜๊ฒŒ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ(Eager Rebalance)

https://www.conduktor.io/kafka/consumer-incremental-rebalance-and-static-group-membership/

'๋ ˆ์ธ์ง€(Range), ๋ผ์šด๋“œ ๋กœ๋นˆ(RoundRobin), ์Šคํ‹ฐํ‚ค(Sticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์ด ํ•ด๋‹นํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

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

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ดํ›„์—๋Š” ์ปจ์Šˆ๋จธ๋“ค์ด ๊ทธ๋ฃน์— ๋‹ค์‹œ ์ฐธ์—ฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€, ์ปจ์Šˆ๋จธ๋“ค์ด ์ด์ „์— ๊ฐ€์กŒ๋˜ ํŒŒํ‹ฐ์…˜์„ ๋ฐ˜๋“œ์‹œ ๋‹ค์‹œ ๋ฐ›๋Š”๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ํ›„์—๋Š” ์ปจ์Šˆ๋จธ๋“ค์ด ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น๋ฐ›์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์„ฑ๋“ค๋กœ ์ธํ•ด, '์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ'์€ ๊ทธ๋ฃน์˜ ์•ˆ์ •์„ฑ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ˜‘๋ ฅ์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ(Cooperative Rebalance, Incremental Rebalance)

https://www.conduktor.io/kafka/consumer-incremental-rebalance-and-static-group-membership/

'ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค(CooperativeSticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์ด ํ•ด๋‹นํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ํ˜‘๋ ฅ์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์€ Kafka v2.4๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ฝค๋‚˜ ์ตœ๊ทผ์— ๋‚˜์˜จ ์ง„๋ณด๋œ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

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

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

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

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

'๋ ˆ์ธ์ง€(Range) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์€ ์•„ํŒŒ์น˜ ์นดํ”„์นด v2.4์ด์ „๊นŒ์ง€๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋œ '์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ' ๋ฐฉ์‹์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์ž…๋‹ˆ๋‹ค.

https://www.conduktor.io/blog/kafka-partition-assignment-strategy/

์ด ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ๋จผ์ € ๊ตฌ๋… ์ค‘์ธ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜๊ณผ ์ปจ์Šˆ๋จธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•œ๋‹ค.
  2. ์ดํ›„ ๊ฐ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ›์•„์•ผ ํ•  ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ, ์ด๋Š” ํ•ด๋‹น ํ† ํ”ฝ์˜ ์ „์ฒด ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ์ด ์ปจ์Šˆ๋จธ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค.
  3. ๋งŒ์•ฝ ์ปจ์Šˆ๋จธ ์ˆ˜์™€ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•œ๋‹ค๋ฉด, ๋ชจ๋“  ์ปจ์Šˆ๋จธ๋Š” ํŒŒํ‹ฐ์…˜์„ ๊ท ๋“ฑํ•˜๊ฒŒ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
  4. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์ปจ์Šˆ๋จธ ์ˆ˜๋กœ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ˆœ์„œ์ƒ ์•ž์— ์žˆ๋Š” ์ปจ์Šˆ๋จธ๋“ค์ด ์ถ”๊ฐ€๋กœ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น๋ฐ›๊ฒŒ ๋œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์—์„œ ๊ฐ ํ† ํ”ฝ์— ์กด์žฌํ•˜๋Š” ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋Š” ์ด 2๊ฐœ, ์ปจ์Šˆ๋จธ ์ˆ˜๋Š” ์ด 3๊ฐœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฅผ 3์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ์ธ 2/3์ด ๋˜์–ด ํ•œ ์ปจ์Šˆ๋จธ๋Š” ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

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

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

'๋ผ์šด๋“œ ๋กœ๋นˆ(Round Robin) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์€ '์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ' ๋ฐฉ์‹์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต ์ค‘ ํ•˜๋‚˜๋กœ, ํŒŒํ‹ฐ์…˜์„ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ์ปจ์Šˆ๋จธ์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. '๋ ˆ์ธ์ง€(Range)' ์ „๋žต๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํŒŒํ‹ฐ์…˜๊ณผ ์ปจ์Šˆ๋จธ๋Š” ํ• ๋‹น ์ „์— ์‚ฌ์ „์‹ ์ˆœ์„œ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

https://www.conduktor.io/blog/kafka-partition-assignment-strategy/

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

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

์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด, ์ปจ์Šˆ๋จธ 2์˜ ์—ฐ๊ฒฐ์ด ๋Š์–ด์งˆ ๊ฒฝ์šฐ ํŒŒํ‹ฐ์…˜ A-1, B-0, B-1์˜ ํ• ๋‹น์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด 4๊ฐœ์˜ ํŒŒํ‹ฐ์…˜ ์ค‘ 3๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ๋‹ค๋ฅธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปจ์Šˆ๋จธ์—๊ฒŒ ๋‹ค์‹œ ์žฌํ• ๋‹น๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜ ์ด๋™์€ ์ปจ์Šˆ๋จธ๊ฐ€ ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ถ”๊ฐ€์ ์ธ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์†Œ์š”๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

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

'์Šคํ‹ฐํ‚ค(Sticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'๋„ '์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ' ๋ฐฉ์‹์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ์ „๋žต์€ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ž‘์—…์ด ํ•„์š”ํ•  ๋•Œ, ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ž‘์—…์ด ์ผ์–ด๋‚˜๊ธฐ ์ „์˜ ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ์ •๋ณด๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋งคํ•‘ํ•˜์—ฌ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถˆํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜ ์ด๋™์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

https://www.conduktor.io/blog/kafka-partition-assignment-strategy/

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„ ์ด๋ฏธ์ง€์—์„œ ์ปจ์Šˆ๋จธ 2์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ์‹คํŒจํ•œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์ปจ์Šˆ๋จธ 1๊ณผ ์ปจ์Šˆ๋จธ 3์€ ๊ธฐ์กด์— ํ• ๋‹น๋ฐ›์•˜๋˜ ํŒŒํ‹ฐ์…˜์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ , ์ปจ์Šˆ๋จธ 2๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ํŒŒํ‹ฐ์…˜์€ ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ 3์—๊ฒŒ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜ ์ด๋™์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

'ํ˜‘๋ ฅ์  ์Šคํ‹ฐํ‚ค(CooperativeSticky) ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต'์€ ๊ธฐ์กด์˜ '์Šคํ‹ฐํ‚ค ํ• ๋‹น ์ „๋žต'์— 'ํ˜‘๋ ฅ์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ'์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ „๋žต์€ ์ „์ฒด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ์•„๋‹Œ ๊ฐœ๋ณ„ ์ปจ์Šˆ๋จธ์— ์ดˆ์ ์„ ๋งž์ถฐ ๋”์šฑ ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์นดํ”„์นด v2.4๋ถ€ํ„ฐ default๋กœ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

์ด๋ฏธ์ง€์˜ ์œ„์ชฝ์€ ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ์ด๊ณ , ์•„๋ž˜๋Š” ๊ธฐ์กด์˜ ์ปจ์Šˆ๋จธ๊ฐ€ ์ œ์™ธ๋  ๋•Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

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

 

 

์ •๋ฆฌ

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹ ์„ค๋ช… ์˜ํ–ฅ ๋ฒ”์œ„ ์ ์šฉ ์ „๋žต
์ ๊ทน์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ(EAGER) ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐœ์ƒ ์‹œ ๋ชจ๋“  ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ์ค‘๋‹จํ•˜๊ณ  ํŒŒํ‹ฐ์…˜์˜ ์†Œ์œ ๊ถŒ์„ ํฌ๊ธฐ ์ „์ฒด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน Range, RoundRobin, Sticky
ํ˜‘๋ ฅ์  ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ(COOPERATIVE) ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ํ•„์š”ํ•œ ํŠน์ • ํŒŒํ‹ฐ์…˜์—๋งŒ ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ, ๊ทธ ์™ธ์˜ ํŒŒํ‹ฐ์…˜๋“ค์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€. ๊ฐœ๋ณ„ ์ปจ์Šˆ๋จธ์˜ ์ž‘์—… ์ค‘๋‹จ์„ ์ตœ์†Œํ™” ํŠน์ • ํŒŒํ‹ฐ์…˜ CooperativeSticky
ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต ์„ค๋ช… 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

 

 

์ฐธ๊ณ 

๋Œ“๊ธ€