โš™๏ธ Devops/๐Ÿ“ฌ Kafka

Kafka Cluster(Broker), Zookeeper์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•˜๊ธฐ

iseunghan 2024. 4. 26. 16:35
๋ฐ˜์‘ํ˜•

Kafka๋ž€ ๋ฌด์—‡์ผ๊นŒ?

์นดํ”„์นด๋Š” ์š”์ฆ˜ MSA์— ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ์นดํ”„์นด๋ž€ ๋ญ๊ณ  ์™œ ํ•„์š”ํ• ๊นŒ์š”? ์นดํ”„์นด๋Š” ๋งํฌ๋“œ์ธ์ด๋ผ๋Š” ํšŒ์‚ฌ์—์„œ ํ•˜๋ฃจ์— 1์กฐ ๋ช‡์ฒœ์–ต์ด ๋„˜๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฉ”์‹œ์ง€๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ๋“œ์ธ์ด ์‚ฌ์šฉ์ค‘์ด๋ผ๋ฉด ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  ์•ˆ์ •์„ฑ ๋˜ํ•œ ๋†’์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์นดํ”„์นด๋Š” Messaging Queue๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ชฝ์ด ์žˆ๊ณ  ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์žˆ๊ณ , ๋˜ ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์ชฝ์ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. Messaging Queue๋Š” Pub/Sub Model์„ ์˜๋ฏธํ•˜๋Š”๋ฐ ์นดํ”„์นด ๋ง๊ณ ๋„ ์—ฌ๋Ÿฌ MQ๋“ค์ด ์žˆ๋Š”๋ฐ ์นดํ”„์นด์˜ ์ฐจ๋ณ„ํ™”๋œ ์ ์€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Messaging Queue: ์นดํ”„์นด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์—

https://ably.com/topic/pub-sub

Publish-Subscribe Model์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” Producer(์ƒ์‚ฐ์ž), ์†Œ๋น„ํ•˜๋Š” Consumer(์†Œ๋น„์ž) ์ด ๋‘˜์„ ์ค‘์žฌํ•˜๋Š” Broker(๋ธŒ๋กœ์ปค)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Topic์ด๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์œ ํŠœ๋ธŒ์˜ ์–ด๋–ค ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๋ฉด ํ•ด๋‹น ์ฑ„๋„ ๊ด€๋ฆฌ์ž(Producer)๊ฐ€ ์˜์ƒ์„ ์—…๋กœ๋“œํ•˜๋ฉด ๊ตฌ๋…์ž๋“ค์—๊ฒŒ ์•Œ๋ฆผ์ด ์˜ค๋“ฏ์ด ์œ ํŠœ๋ธŒ ์ฑ„๋„์€ Topic์ด ๋˜๊ณ , ํ•ด๋‹น ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๋Š” ์šฐ๋ฆฌ๋Š” Consumer๊ฐ€ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†กํ•œ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Pub/Sub Model์—์„œ๋Š” ๊ตฌ๋…์ž๋“ค์˜ ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ชจ๋ฅด๊ณ  Topic์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Topic, Partition ๊ทธ๋ฆฌ๊ณ  Segment File

https://www.scaler.com/topics/kafka-tutorial/kafka-partitions/

๋ฉ”์‹œ์ง€๋Š” Topic์ด๋ผ๋Š” ๊ฐœ๋…์„ ํ†ตํ•ด ์นดํ…Œ๊ณ ๋ฆฌํ™” ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • Topic์œผ๋กœ ๋“ค์–ด์˜จ ๋ฉ”์‹œ์ง€๋“ค์€ Queue ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ํ•˜๋‚˜์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“์ด๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ๋‚ด๋ถ€์—๋Š” ์ข€ ๋” ์„ธ๋ถ€ํ™”๋œ Partition๊ณผ Offset์ด๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Topic์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Partition์œผ๋กœ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Partition ๋‚ด์˜ ํ•œ์นธ์€ ๋กœ๊ทธ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ณ  ๋ฉ”์‹œ์ง€๋Š” Partition์— ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“์ด๋Š” ๋ฉ”์‹œ์ง€๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๊ฒƒ์ด ๋ฐ”๋กœ Offset์ž…๋‹ˆ๋‹ค.

์™œ ํ•˜๋‚˜์˜ ํ† ํ”ฝ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ผ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ์นดํ”„์นด๋Š” ๋ฉ”์‹œ์ง€์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Partition๊ณผ Offset์ด ์žˆ๋Š”๋ฐ ์™œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†์„๊นŒ์š”? ์™œ๊ทธ๋Ÿฐ์ง€๋Š” ์•„๋ž˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋˜๋Š”์ง€ ์•Œ๋ฉด ์ดํ•ด๊ฐ€ ๋˜์‹ค ๊ฒ๋‹ˆ๋‹ค.

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

๊ธฐ๋ณธ์ ์œผ๋กœ ์นดํ”„์นด๋Š” ํ† ํ”ฝ์œผ๋กœ ๋ฐœํ–‰๋œ ๋ฉ”์‹œ์ง€๋Š” ๋ผ์šด๋“œ ๋กœ๋นˆ ๋ฐฉ์‹์œผ๋กœ ๋žœ๋ค Partition์— ์ €์žฅ(๋ฌผ๋ก  Partition Key๋ฅผ ์ด์šฉํ•˜๋ฉด ํŠน์ • ํŒŒํ‹ฐ์…˜์— ๋ฉ”์‹œ์ง€๋ฅผ ์ ์žฌ ๊ฐ€๋Šฅ)๋˜๋Š”๋ฐ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋“ค์€ ํ์ฒ˜๋Ÿผ ์Œ“์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํŠน์ • ํŒŒํ‹ฐ์…˜์— ๋“ค์–ด์˜จ ๋ฉ”์‹œ์ง€๋“ค์€ Broker๋ฅผ ํ†ตํ•ด Offset์ด๋ผ๋Š” ๊ฐ’์ด ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋ถ€์—ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ด Offset์„ ์ด์šฉํ•ด์„œ Consumer๋Š” ํ•ด๋‹น Topic๋‚ด์˜ Partition์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋””๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€ ๋ถ๋งˆํฌํ•˜์—ฌ Consumer๊ฐ€ ์ฃฝ์—ˆ๋‹ค ์‚ด์•„๋‚˜๋„ ๋‹ค์‹œ ๋ถ๋งˆํฌ๋œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ฝ์„ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์žฅ์•  ๋ณต๊ตฌ)

๐Ÿ’ก ์œ„ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์ž๋ฉด, ํŠน์ • Topic์œผ๋กœ ๋“ค์–ด์˜จ ๋ฉ”์‹œ์ง€๋“ค์€ Topic ๋‚ด๋ถ€์˜ ํŒŒํ‹ฐ์…˜์— ๋‚˜๋ˆ ์„œ ์ €์žฅ๋˜๊ฒŒ ๋˜๊ณ  ํŒŒํ‹ฐ์…˜ ๋‚ด๋ถ€์—๋Š” Offset์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€๋งŒ, ํŒŒํ‹ฐ์…˜ ๊ฐ„์—๋Š” ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ

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

Consumer Group: ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ฐฉ๋ฒ•

Consumer๋Š” ๊ทธ๋ฃน์ด๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋Š”๋ฐ ํŠน์ • ํ† ํ”ฝ์„ ์†Œ๋น„ํ•˜๋Š” ์ปจ์Šˆ๋จธ๋“ค์—๊ฒŒ Group-Id๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ํŒŒํ‹ฐ์…˜์€ Consumer Group๋‚ด์˜ ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ์— ์˜ํ•ด์„œ๋งŒ ๋ฉ”์‹œ์ง€๊ฐ€ ์†Œ๋น„๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

case 1) Partition 3๊ฐœ - Consumer 2๊ฐœ

  • ํŒŒํ‹ฐ์…˜์ด 3๊ฐœ, ์ปจ์Šˆ๋จธ๊ฐ€ 2๊ฐœ์ผ ๊ฒฝ์šฐ → ์ปจ์Šˆ๋จธ ์ค‘ ํ•˜๋‚˜๋Š” ๋‘๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ์†Œ๋น„
  • ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์ปจ์Šˆ๋จธ์— ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

case 2) Partition 3๊ฐœ - Consumer 3๊ฐœ

  • ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜์™€ ์ปจ์Šˆ๋จธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด → ํŒŒํ‹ฐ์…˜๊ณผ ์ปจ์Šˆ๋จธ๊ฐ€ 1:1 ๋งค์นญ๋˜์–ด ๋ฉ”์‹œ์ง€ ์†Œ๋น„
  • ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๊ตฌ์„ฑ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜ ๋‹น ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ถ™์–ด์„œ ๋น ๋ฅด๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

case 3) Partition 3๊ฐœ - Consumer 4๊ฐœ

ํ•ด๋‹น ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์ด 3๊ฐœ์ด๊ณ  ๊ทธ๋ฃน๋‚ด์˜ ์ปจ์Šˆ๋จธ๋„ 3๊ฐœ์ธ ๊ฒฝ์šฐ์— ์—ฌ๊ธฐ์— ํ•˜๋‚˜๋ฅผ ๋” ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ด 4๊ฐœ์˜ ์ปจ์Šˆ๋จธ๋‹ˆ๊นŒ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ์„๊นŒ์š”?

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

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

Broker์™€ Zoopkeeper๋ž€?

https://double.cloud/blog/posts/2023/03/the-many-use-cases-of-apache-kafka/

 

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

Broker๋Š” ๋ฌด์Šจ์ผ์„ ํ• ๊นŒ?

  • Leader Broker
    • ํ•˜๋‚˜์˜ ํ† ํ”ฝ ํŒŒํ‹ฐ์…˜๋งˆ๋‹ค ์กด์žฌํ•˜๋Š” ๋ฆฌ๋” ๋ธŒ๋กœ์ปค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋” ๋ธŒ๋กœ์ปค๋Š” 0๊ฐœ ์ด์ƒ์˜ ํŒ”๋กœ์›Œ ๋ธŒ๋กœ์ปค๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • Follwer Boker
    • ๋ฆฌ๋”์˜ ๋ฐฑ์—…์„ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ํŒ”๋กœ์›Œ ๋ธŒ๋กœ์ปค๋Š” ๋ฆฌ๋” ๋ธŒ๋กœ์ปค๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌ๋” ๋ธŒ๋กœ์ปค๊ฐ€ ๋‹ค์šด๋˜๋ฉด Zookeeper์— ์˜ํ•ด์„œ ํŒ”๋กœ์›Œ ๋ธŒ๋กœ์ปค ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ƒˆ๋กœ์šด ๋ฆฌ๋”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • Controller
    • ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค์ˆ˜ ๋ธŒ๋กœ์ปค ์ค‘ ํ•œ๋Œ€๋Š” ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
      • ๋ฆฌ๋” ์„ ์ •, ํ† ํ”ฝ ์ƒ์„ฑ, ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ, ๋ณต์ œ๋ณธ ๊ด€๋ฆฌ
    • ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค๋“ค์˜ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋ฉด์„œ ๋ธŒ๋กœ์ปค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋น ์ง€๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ธŒ๋กœ์ปค์— ์กด์žฌํ•˜๋Š” ํŒŒํ‹ฐ์…˜๋“ค์„ ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Cordinator
    • ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ํ•ด๋‹น ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด์„œ 1๋Œ€1๋กœ consumeํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ปจ์Šˆ๋จธ ํ•˜๋‚˜๊ฐ€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋‹ค๋ฅธ ์ปจ์Šˆ๋จธ์—๊ฒŒ ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์„ Rebalance ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒํ‹ฐ์…˜ ์˜คํ”„์…‹ ๊ด€๋ฆฌ
    • ํŠน์ • ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ์˜คํ”„์…‹์„ ์ปค๋ฐ‹ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Zookeeper๋Š” ๋ฌด์Šจ์ผ์„ ํ• ๊นŒ?

์ฃผํ‚คํผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์นดํ”„์นด ๋ธŒ๋กœ์ปค๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • Controller ์„ ์ •
    • Controller ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ƒˆ๋กœ์šด Controller๋ฅผ ์„ ์ถœ
  • Broker, Consumer ๊ด€๋ฆฌ
    • Broker ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์ƒํƒœ ์ •๋ณด ๊ธฐ๋ก
    • ์ƒˆ๋กœ์šด Broker ์ถ”๊ฐ€
    • Broker ์žฅ์•  ๊ฐ์ง€
      • Leader Broker ์žฅ์•  ์‹œ ์ƒˆ๋กœ์šด Leader ์„ ์ถœ
  • Topic ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
    • Partition ๊ฐœ์ˆ˜, ์„ค์ • ๊ด€๋ฆฌ
  • ๋ณ€๊ฒฝ์‚ฌํ•ญ(ํ† ํ”ฝ์„ ์ƒ์„ฑ ๋˜๋Š” ์ œ๊ฑฐ, ๋ธŒ๋กœ์ปค ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐ)๋“ค์„ ์นดํ”„์นด ๋ธŒ๋กœ์ปค๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์—ญํ• 
  • ์ฃผํ‚คํผ๋Š” ์ตœ์†Œ 3๋Œ€ ์ด์ƒ(์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๋Š” 5๋Œ€ ์ด์ƒ)์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฃผํ‚คํผ ์•™์ƒ๋ธ”: ์ฃผํ‚คํผ 3๋Œ€ ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑํ•œ ๊ฒƒ์„ ์˜๋ฏธ

REFERENCES

๋ฐ˜์‘ํ˜•