์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ์ฒ˜๋ฆฌํ•  ํŒŒํ‹ฐ์…˜์„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ• ๋‹น ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด. ์ž‘์€ ํด๋Ÿฌ์Šคํ„ฐ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์„ ์–ด๋–ป๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์„๊นŒ?

7 minute read

ํšŒ์‚ฌ์—์„œ Confluent๋ฅผ ํ†ตํ•ด Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ์นดํ”„์นด์— ๋Œ€ํ•ด์„œ ์ข€๋” ์ž์„ธํžˆ ์•Œ๊ณ , ์ „๋ฌธ์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ 2025๋…„ ์ฒซ ๋ชฉํ‘œ๋กœ Confluent์˜ Kafka ์ž๊ฒฉ์ฆ์ธ Confluent Certified Developer for Apache Kafkaยฎ ์ž๊ฒฉ์ฆ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค โœŒ๏ธ

๋“ค์–ด๊ฐ€๋ฉฐ

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ชจ์—ฌ์„œ ์นดํ”„์นด ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ๋œ ์ปดํฌ๋„ŒํŠธ ์ž…๋‹ˆ๋‹ค. โ€œ์ปจ์Šˆ๋จธ๊ฐ€ N๊ฐœ๋‹ˆ๊นŒ, ์ฒ˜๋ฆฌ๋Ÿ‰๋„ N๊ฐœ? ํžˆํžˆโ€์ฒ˜๋Ÿผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๋ณธ์งˆ์€ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์ด ํ•˜๋‚˜์˜ โ€œ์ž‘์€ ํด๋Ÿฌ์Šคํ„ฐโ€๊ฐ€ ๋˜์–ด ์นดํ”„์นด ๋ธŒ๋กœ์ปค์™€ ํ†ต์‹ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ˆ ์ด๋“ค์„ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ์—ญํ• ์ด ํ•„์š” ํ•ฉ๋‹ˆ๋‹ค! ์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ๊ทธ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ฝ”๋””๋„ค์ดํ„ฐ(Coordinator)์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค: โ€œโ€, ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ ์ปจ์Šˆ๋จธ์— ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹นํ•˜๋Š” โ€œPartition Assignorโ€์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Range Assignor

Confluent: Consumer Group Protocol

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ• ๋‹น ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.

๊ฐ ํ† ํ”ฝ ๋ณ„ ํŒŒํ‹ฐ์…˜์„ ์ •๋ ฌํ•œ ํ›„, ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์ •๋ ฌ๋œ ์ปจ์Šˆ๋จธ ID ์ˆœ์„œ๋Œ€๋กœ ํ• ๋‹นํ•˜๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์ด ํ† ํ”ฝ ๋ณ„๋กœ ์ด๋ค„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋ฐ˜ ์ปจ์Šˆ๋จธ๋“ค์€ ๋ฐ˜๋“œ์‹œ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ฐ›์ง€๋งŒ, ํ›„๋ฐ˜ ์ปจ์Šˆ๋จธ๋ฅผ ํ† ํ”ฝ์„ ํ• ๋‹น ๋ฐ›์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ, ๊ทธ๋ฆผ์—๋„ ๋‚˜์˜ค๋“ฏ์ด ๊ตฌ๋…ํ•˜๋Š” ํ† ํ”ฝ์ด 2๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด, ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์„ ์ด๋ฃจ๋Š” ์ดˆ๋ฐ˜ ์ปจ์Šˆ๋จธ๋“ค์ด ๋งŽ์€ ๋ถ€ํ•˜๋ฅผ ๋ฐ›๊ณ , ๋‚˜๋จธ์ง€ ์ปจ์Šˆ๋จธ๋Š” idle ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ป ์ปจ์Šˆ๋จธ๋ฅผ ๋””ํ”Œ๋กœ์ด ํ–ˆ๋Š”๋ฐ, ๋…ธ๋Š” ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉด ์•ˆ ๋˜๊ฒ ์ฃ ? ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ๊ฒƒ์ด RoundRobinAssignor ์ž…๋‹ˆ๋‹ค!

RoundRobin Assignor

Confluent: Consumer Group Protocol

Range Assignor์˜ ๊ฒฝ์šฐ, ์ดˆ๋ฐ˜ ์ปจ์Šˆ๋จธ๊ฐ€ ๋งŽ์€ ํŒŒํ‹ฐ์…˜์ด ํ• ๋‹น๋˜์–ด ํ•ซ์ŠคํŒŸ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. RoundRobin Assignor๋Š” ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ๋‚˜์˜จ ํ• ๋‹น ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

RoundRobin์—์„œ๋Š” ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋“  ํ† ํ”ฝ์™€ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์„ ํ•˜๋‚˜๋กœ ๋ชจ์•„์„œ ํ• ๋‹น์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ [customers-P0, customers-P1, orders-P0, orders-P1]์ฒ˜๋Ÿผ ๋ชจ๋“  ํ† ํ”ฝ-ํŒŒํ‹ฐ์…˜ ์Œ์„ ๋ชจ์€ ํ›„, ์ด๋ฅผ ๊ฐ ์ปจ์Šˆ๋จธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ• ๋‹น ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ปจ์Šˆ๋จธ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํ† ํ”ฝ-ํŒŒํ‹ฐ์…˜์˜ ์Œ๋ณด๋‹ค ์ ๋‹ค๋ฉด, ๋ชจ๋“  ํ† ํ”ฝ์ด ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ idle ์ปจ์Šˆ๋จธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์—, ์ปจ์Šˆ๋จธ ๊ฐฏ์ˆ˜๊ฐ€ ํ† ํ”ฝ-ํŒŒํ‹ฐ์…˜ ์Œ๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด, idle ์ปจ์Šˆ๋จธ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ดํ›„์— ๋‚˜์˜ฌ ๊ฐœ์„ ๋œ ํ• ๋‹น ์ •์ฑ…์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Rebalancing

์ปจ์Šˆ๋จธ์˜ ์‹ ๊ทœ ๋“ฑ๋ก ๋˜๋Š” ํƒˆํ‡ด, ํ† ํ”ฝ ํŒŒํ‹ฐ์…˜์˜ ์ฆ๊ฐ€ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ธŒ๋กœ์ปค๋Š” โ€œ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑโ€์„ ํŠธ๋ฆฌ๊ฑฐ ํ•ฉ๋‹ˆ๋‹ค.

JoinGroup, SyncGroup๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, ์ปจ์Šˆ๋จธ ์ชฝ์—์„œ ๋ธŒ๋กœ์ปค์—๊ฒŒ Request๋ฅผ ๋ณด๋ƒˆ๋Š”๋ฐ์š”. ๋ธŒ๋กœ์ปค๋Š” โ€œ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑโ€์„ ์–ด๋–ป๊ฒŒ ํŠธ๋ฆฌ๊ฑฐ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?

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

REBALANCE_IN_PROGRESS ์‘๋‹ต์„ ๋ฐ›์€ ์ปจ์Šˆ๋จธ๋Š” ํ˜„์žฌ ํ• ๋‹น๋œ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋กœ์ปค์—๊ฒŒ ๋‹ค์‹œ JoinGroup ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ปจ์Šˆ๋จธ ์ชฝ์—์„œ๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด, onPartitionsRevoked ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•˜๊ณ , SyncRequest์˜ ์‘๋‹ต์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ฐ›์œผ๋ฉด onPartitionsAssigned ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Stop-the-world Rebalance

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

Confluent: Consumer Group Protocol

๊ธฐ์กด์˜ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ณผ์ •์€ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์„ ๋ฐ”๊พธ๊ธฐ ์ „์— ๋ชจ๋“  ์ปจ์Šˆ๋จธ๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ํŒŒํ‹ฐ์…˜์„ Revoke ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ผ์‹œ ์ค‘๋‹จ ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

Sticky Assignor

Confluent: Consumer Group Protocol

Sticky Assignor๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ์ดํ›„์— ์ปจ์Šˆ๋จธ๊ฐ€ ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•˜๋˜ ํŒŒํ‹ฐ์…˜์„ ์ตœ๋Œ€ํ•œ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋„๋ก ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋ณธ๋ž˜ Round Robin Assignor์˜ ํŠน์ง•์ธ โ€œ๊ฐ ์ปจ์Šˆ๋จธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒŒํ‹ฐ์…˜์˜ ๊ฐฏ์ˆ˜๋Š” ๋ชจ๋‘ ๊ฐ™๊ฑฐ๋‚˜ ์ตœ๋Œ€ ํ•˜๋‚˜ ์ •๋„๋งŒ ์ฐจ์ด๋‚˜๊ฒŒ ํ•œ๋‹ค.โ€๋ผ๋Š” ํŠน์ง•์„ ๊ฐ–๋Š”๋ฐ, ์ด๋ฅผ ํ™œ์šฉํ•ด ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์„ ์กฐ์ • ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…์ œ๋ฅผ ๊ฑฐ๊พธ๋กœ ํ•˜๋ฉด, ์žฌํ• ๋‹น ๊ณผ์ •์—์„œ ๊ธฐ์กด ์ปจ์Šˆ๋จธ์™€ ์‹ ๊ทœ ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ์ฐจ์ด๊ฐ€ 2๊ฐœ ์ด์ƒ ์ฐจ์ด๊ฐ€ ๋‚˜๋ฉด ์žฌํ• ๋‹น ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ๋‘˜ ์ด์ƒ ์ฐจ์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๊ทธ ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์บก์ณ์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์ƒํ™ฉ์€ Consumer 3๊ฐ€ ์ถ”๊ฐ€ ๋œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ, ์ปจ์Šˆ๋จธ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒŒํ‹ฐ์…˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ตœ๋Œ€ ํ•˜๋‚˜๋งŒ ์ฐจ์ด ๋‚˜์•ผ ํ•˜๋Š”๋ฐ, Consumer 1๊ณผ Consumer 3์ด 2๊ฐœ์™€ 0๊ฐœ๋กœ ๋‘ ๊ฐœ ์ฐจ์ด๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— Consumer 1์€ 1๊ฐœ์™€ 0๊ฐœ๋กœ ํ•˜๋‚˜๋งŒ ์ฐจ์ด ๋‚˜๋ฏ€๋กœ ํŒŒํ‹ฐ์…˜ ์กฐ์ •์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Consumer 1์—์„œ ์ฒ˜๋ฆฌํ•˜๋˜ ํŒŒํ‹ฐ์…˜ ์ค‘ ํ•˜๋‚˜์ธ p2๋ฅผ ํ•ด์ œํ•˜๊ณ  ์ด๋ฅผ Consumer 3์— ํ• ๋‹น ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ, Sticky Assignor๋„ Stop-the-world ๋ฌธ์ œ๋Š” ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์ด ์ด๋ค„์ง€๋Š” ๊ณผ์ •์—์„œ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์€ ํ”ผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Cooperative Sticky Assignor

๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ณผ์ •์—์„œ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ์ „์ฒด์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๊ฐœ๋ฐœ๋œ ๊ฒƒ์ด Cooperative Sticky Assignor ์ž…๋‹ˆ๋‹ค.

์•ž์—์„œ ์‚ดํŽด๋ณธ Assignor๋“ค์€ JoinGroup-SyncGroup ์š”์ฒญ์„ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, Cooperative Sticky Assignor๋Š” JoinGroup-SyncGroup ์š”์ฒญ์„ 2๋ฒˆ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค!

Confluent: Consumer Group Protocol

์ฒซ๋ฒˆ์งธ ๊ณผ์ •์—์„œ๋Š” ํ˜„์žฌ JoinGroup์œผ๋กœ ๋ฉค๋ฒ„ ํ˜„ํ™ฉ๋งŒ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  SyncGroup์—์„œ๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๊ฒฐ๊ณผ๋กœ ํ• ๋‹น ํ•ด์ œํ•  ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด์„œ๋งŒ revoke ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, revoke ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ํŒŒํ‹ฐ์…˜์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ณ„์† ์ด์–ด์ง‘๋‹ˆ๋‹ค!

Confluent: Consumer Group Protocol

๋‘๋ฒˆ์žฌ ๊ณผ์ •์—์„œ๋Š” ํ•œ๋ฒˆ๋” JoinGroup๊ณผ SyncGroup์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, SyncGroup์˜ ์‘๋‹ต์œผ๋กœ revoke ํ–ˆ๋˜ ํŒŒํ‹ฐ์…˜์„ ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด์—๋Š” revoke์™€ ์žฌํ• ๋‹น์ด ํ•œ๋ฒˆ์— ์ด๋ค„์ ธ์„œ ์ „์ฒด revoke ํ›„์— ์žฌํ• ๋‹น์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Cooperative Sticky Assignor์—์„œ๋Š” revoke์™€ ์žฌํ• ๋‹น ๊ณผ์ •์„ two-step์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ stop-the-world ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค!!

๋งบ์Œ๋ง

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

์•ž์œผ๋กœ ํšŒ์‚ฌ์—์„œ ๋” ๋งŽ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ETL๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ Application์„ ๊ฐœ๋ฐœํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์–ธ์  ๊ฐ€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ใ…Žใ…Ž ์˜ค๋Š˜๋„ ํŒŒ์ž‡ํž!

Categories:

Updated: