Zookeeper & KRaft

์ฃผํ‚คํผ(ZooKeeper)๋Š” ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜๋Š” ๋ถ„์‚ฐ ์ฝ”๋””๋„ค์ด์…˜ ์„œ๋น„์Šค๋กœ, ์นดํ”„์นด๋Š” ์ž์ฒด์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†์–ด ์ด ์—ญํ• ์„ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์ธ ์ฃผํ‚คํผ์— ์˜์กดํ–ˆ๋‹ค.

์ฃผํ‚คํผ(ZooKeeper)์˜ ์—ญํ• 

๋ถ„์‚ฐ๋œ ์—ฌ๋Ÿฌ ์„œ๋ฒ„(๋…ธ๋“œ)๋“ค์ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋•๋Š” "์กฐ์ •์ž" ๋˜๋Š” "์ค‘์•™ ๊ด€๋ฆฌ์†Œ" ์—ญํ•  ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ๋ฆฌ๋” ์„ ์ถœ (Leader Election): ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค ์ค‘ ๋‹จ ํ•˜๋‚˜๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ(Controller) ๋ธŒ๋กœ์ปค๋กœ ์„ ์ถœ

    • ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ฑ…์ž„์ง€๋Š” ๋ฆฌ๋” ์—ญํ•  ์ˆ˜ํ–‰

  • ์ƒํƒœ ๊ด€๋ฆฌ (Status Management): ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์ƒํƒœ ์ •๋ณด(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ

    • ํด๋Ÿฌ์Šคํ„ฐ์— ์–ด๋–ค ๋ธŒ๋กœ์ปค๊ฐ€ ์ฐธ์—ฌ ์ค‘์ธ์ง€, ์–ด๋–ค ํ† ํ”ฝ์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€, ๊ฐ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์€ ๋ช‡ ๊ฐœ์ธ์ง€, ๊ฐ ํŒŒํ‹ฐ์…˜์˜ ๋ฆฌ๋”๋Š” ์–ด๋–ค ๋ธŒ๋กœ์ปค์ธ์ง€ ๋“ฑ

  • ์žฅ์•  ๊ฐ์ง€ (Failure Detection): ํŠน์ • ๋ธŒ๋กœ์ปค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด, ์ฃผํ‚คํผ๋Š” ์ด๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ณต๊ตฌ ์ž‘์—… ์‹œ์ž‘

์นดํ”„์นด๊ฐ€ ์ฃผํ‚คํผ๋ฅผ ํ•„์š”ํ•œ ์ด์œ 

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

์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ๋ฆฌ๋”๋ฅผ ๋‹ด๋‹นํ•˜๋˜ ๋ธŒ๋กœ์ปค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

  1. ์ฃผํ‚คํผ๊ฐ€ ํ•ด๋‹น ๋ธŒ๋กœ์ปค์˜ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ฐ์ง€

  2. ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋Š” ์ฃผํ‚คํผ๋กœ๋ถ€ํ„ฐ ํ•ด๋‹น ์‚ฌ์‹ค ํ†ต๋ณด

  3. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ์ƒˆ๋กœ์šด ๋ฆฌ๋”๋ฅผ ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค ์ค‘์—์„œ ์„ ์ถœ

  4. ์ƒˆ๋กœ์šด ๋ฆฌ๋” ์ •๋ณด๋ฅผ ์ฃผํ‚คํผ์— ๊ธฐ๋ก

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

์ด์ฒ˜๋Ÿผ ์นดํ”„์นด๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‘๋‡Œ ์—ญํ• ์„ ์ฃผํ‚คํผ์— ๋งก๊ฒจ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผํ‚คํผ์˜ ํ•œ๊ณ„

์ฃผํ‚คํผ๋Š” ๋งค์šฐ ์•ˆ์ •์ ์ด์ง€๋งŒ, ์นดํ”„์นด๋ฅผ ์šด์˜ํ•˜๋Š” ๋ฐ ์žˆ์–ด ๋ช‡ ๊ฐ€์ง€ ๋ถˆํŽธํ•œ ์ ์ด ์กด์žฌํ–ˆ๋‹ค.

  • ์šด์˜ ๋ถ€๋‹ด: ์นดํ”„์นด์™€๋Š” ๋ณ„๊ฐœ์ธ ์ฃผํ‚คํผ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋”ฐ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌ ํ•„์š”

    • ์ธํ”„๋ผ ๊ตฌ์„ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง, ํŒจ์น˜ ๋“ฑ ์šด์˜ ๋ถ€๋‹ด์„ ๊ฐ€์ค‘

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

  • ๋А๋ฆฐ ์žฅ์•  ๋ณต๊ตฌ: ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค์— ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ์ƒˆ๋กœ์šด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ฃผํ‚คํผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”

KRaft

์œ„์˜ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด KRaft๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.

  • ์ฃผํ‚คํผ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ , ์นดํ”„์นด๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ์‹

  • ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์ผ๋ถ€ ๋ธŒ๋กœ์ปค๋“ค์ด ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์„ ๊ฒธํ•˜๋ฉฐ, Raft ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œ ๋ฐ ๋™๊ธฐํ™”

์ฃผํ‚คํผ๋ฅผ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์ด ์žˆ๋‹ค.

  • ์šด์˜ ๋‹จ์ˆœํ™”: ๊ด€๋ฆฌํ•  ์‹œ์Šคํ…œ์ด ์นดํ”„์นด ํ•˜๋‚˜๋กœ ์ค„์–ด ๋งค์šฐ ํŽธ๋ฆฌ

  • ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ ํ–ฅ์ƒ: ์ฃผํ‚คํผ ๋ณ‘๋ชฉ์ด ์‚ฌ๋ผ์ ธ ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

  • ๋น ๋ฅธ ์žฅ์•  ๋ณต๊ตฌ: ์ปจํŠธ๋กค๋Ÿฌ ์žฅ์•  ์‹œ ์ƒˆ๋กœ์šด ๋ฆฌ๋” ์„ ์ถœ์ด ๊ฑฐ์˜ ์ฆ‰์‹œ ์ด๋ฃจ์–ด์ง

ํ˜„์žฌ ์นดํ”„์นด๋Š” KRaft ๋ชจ๋“œ๋ฅผ ์ •์‹์œผ๋กœ ์ง€์›ํ•˜๋ฉฐ, ์‹ ๊ทœ ํด๋Ÿฌ์Šคํ„ฐ๋Š” KRaft ๋ชจ๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ‘œ์ค€์œผ๋กœ ๊ถŒ์žฅ๋˜๊ณ  ์žˆ๋‹ค.

KRaft์˜ ๋™์ž‘ ๋ฐฉ์‹

KRaft ๋ชจ๋“œ์—์„œ๋Š” ์นดํ”„์นด ๋…ธ๋“œ๊ฐ€ ๋ช…ํ™•ํ•œ ์—ญํ• ์„ ๋ถ€์—ฌ๋ฐ›์œผ๋ฉฐ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋‚ด๋ถ€ ํ† ํ”ฝ์„ ํ†ตํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.

  • ๋…ธ๋“œ์˜ ์—ญํ•  ๋ถ„๋ฆฌ (Node Roles): KRaft ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ ๋…ธ๋“œ๋Š” controller, broker, combined ์ค‘ ํ•˜๋‚˜์˜ ์—ญํ• ์„ ๊ฐ€์ง

    • ์ปจํŠธ๋กค๋Ÿฌ(Controller) ๋…ธ๋“œ: Raft ์ฟผ๋Ÿผ์— ์ฐธ์—ฌํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰(๋ฐ์ดํ„ฐ I/O๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ)

    • ๋ธŒ๋กœ์ปค(Broker) ๋…ธ๋“œ: ๊ธฐ์กด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ I/O(์“ฐ๊ธฐ/์ฝ๊ธฐ)๋ฅผ ๋‹ด๋‹นํ•˜์ง€๋งŒ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์œ„์ž„

    • ํ˜ผํ•ฉ(Combined) ๋…ธ๋“œ: ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ธŒ๋กœ์ปค ์—ญํ• ์„ ๋™์‹œ์— ์ˆ˜ํ–‰(ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ํ•ฉ)

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

์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ์˜ ์ •๋Ÿ‰์  ๋น„๊ต

์ฃผํ‚คํผ์™€ KRaft์˜ ์ฐจ์ด๋Š” ๊ด€๋ฆฌ ์š”์†Œ์˜ ๋‹จ์ˆœํ™” ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ •๋Ÿ‰์ ์œผ๋กœ๋„ ๋šœ๋ ทํ•œ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค.

ํ•ญ๋ชฉ
์ฃผํ‚คํผ(ZooKeeper) ๊ธฐ๋ฐ˜
ํฌ๋ž˜ํ”„ํŠธ(KRaft) ๊ธฐ๋ฐ˜

์žฅ์•  ๋ณต๊ตฌ ์‹œ๊ฐ„

์ˆ˜์‹ญ ์ดˆ ~ ์ˆ˜ ๋ถ„(๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋กœ๋”ฉ)

์ˆ˜ ๋ฐ€๋ฆฌ์ดˆ ~ ์ˆ˜ ์ดˆ(์ฆ‰๊ฐ์ ์ธ ๋ฆฌ๋” ์ „ํ™˜)

์ตœ๋Œ€ ํŒŒํ‹ฐ์…˜ ์ˆ˜

์ˆ˜์‹ญ๋งŒ ๊ฐœ(์ฃผํ‚คํผ ๋ณ‘๋ชฉ)

์ˆ˜๋ฐฑ๋งŒ ๊ฐœ ์ด์ƒ(๋‚ด๋ถ€ ํ† ํ”ฝ์œผ๋กœ ๊ด€๋ฆฌ)

์šด์˜ ๋ฆฌ์†Œ์Šค

Kafka JVMs + ZooKeeper JVMs

Kafka JVMs Only

์•„ํ‚คํ…์ฒ˜ ๋ณต์žก๋„

๋†’์Œ(2๊ฐœ์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ)

๋‚ฎ์Œ(๋‹จ์ผ ์‹œ์Šคํ…œ)

์ด์ฒ˜๋Ÿผ KRaft๋Š” ๋‹จ์ˆœํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ๋ฅผ ๋„˜์–ด, ์นดํ”„์นด์˜ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ, ์šด์˜ ํŽธ์˜์„ฑ์„ ํ–ฅ์ƒ์‹œ์ผฐ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated

Was this helpful?