Kafka ๊ตฌ์กฐ

Kafka์— ๋Œ€ํ•ด ์ž์„ธํžˆ

Posted by Bangjinhyuk on April 20, 2022 · 2 mins read

Kafka ๊ตฌ์กฐ

  • Topic์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ๋ณด๋Š”๊ฒƒ์ด ์ข‹๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ Click, Upload Topic์ด ์กด์žฌํ•˜๋ฉฐ Broker2 ๋Š” Broker1์„ ๋ณต์ œํ•œ๊ฒƒ์ด๋‹ค. ๊ฐ๊ฐ์˜ Topic์€ partition์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด Partition์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ producer๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์„ธ์ง€์˜ ์ˆœ์„œ๋Š” ๋ณด์žฅ ๋ชปํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ™์€ partition์—์„œ์˜ ์ˆœ์„œ๋Š” ๋ณด์žฅ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ?

    producer๊ฐ€ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜๊ณ  ์‹ถ์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ•˜๋‚˜์˜ partition์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” key์— ๋”ฐ๋ผ ๊ฐ์ž ๋‹ค๋ฅธ partition์œผ๋กœ ํ• ๋‹น ๋˜๋„๋ก ํ•  ์ˆ˜์žˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ partition์˜ ์ˆ˜๋ฅผ 1๊ฐœ๋กœ ๊ณ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ๋ชจ๋‘ ์ƒํ™ฉ๊ณผ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์ ์ ˆํ•œ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.


  • ๋˜ kafka๋Š” ๋‹ค์–‘ํ•œ ์„œ๋ฒ„(consumer)๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ•œ consumer๊ฐ€ ๋จผ์ € ๋ฉ”์‹œ์ง€๋ฅผ ๊บผ๋‚ด๊ฐ€๋ฉด ๋‹ค๋ฅธ consumer๋Š” ๊ทธ ๋ฉ”์„ธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š”๊ฒƒ์ผ๊นŒ?

    ์•„๋‹ˆ๋‹ค. ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ€๋„ ํ์—์„œ ์ฆ‰์‹œ ์‚ญ์ œ ๋˜์ง€ ์•Š์œผ๋ฉฐ , ํ•˜๋‚˜์˜ ํ† ํ”ฝ์— ์—ฌ๋Ÿฌ Consumer ๊ทธ๋ฃน์ด ๋ถ™์–ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐˆ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๊ฐ ์ปจ์Šˆ๋จธ๊ฐ€ ๊ฐ topic์— ๋Œ€ํ•ด ๋ณ„๊ณ ์˜ offset์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ group์— consumer๊ฐ€ ์ถ”๊ฐ€/์ œ๊ฑฐ ๋  ๋•Œ๋งˆ๋‹ค rebalancing์„ ํ•˜์—ฌ consumer๋“ค์—๊ฒŒ partition์„ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.


  • ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ๊ฐ์˜ ํŒŒํ‹ฐ์…˜์—๋Š” ์—ฌ๋Ÿฌ consumer๊ฐ€ ํ• ๋‹น ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด๊ฐ€?

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


  • Offset์€?

    offset์€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋””๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€ ์ €์žฅํ•˜๋Š” ๊ฐ’์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด offset์ด 5๋ผ๋ฉด 0~4๋Š” ์ฝ์€ ๊ฒƒ์ด๋‹ค. offset์€ broker์— ๊ธฐ๋ก์ด ๋˜๋ฉฐ ๊ธฐ๋ก์ด ์œ ์ง€๋˜๋Š” ์‹œ๊ฐ„์€ offsets.retention.minutes ์— ๋ช…์‹œ๋œ ์‹œ๊ฐ„๋™์•ˆ ์ €์žฅ์ด ๋˜๋ฉฐ ์ด๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋ฆฌ์…‹์ด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿด๋•Œ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ auto.offset.reset ์„ ์ง€์ •ํ•˜์—ฌ ๋ฆฌ์…‹๋ ๋•Œ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ 

Apache Kafka ๊ธฐ๋ณธ ๊ฐœ๋… (Partition / Consumer / Consumer Group/ Offset Management)

๋งจ์œ„๋กœ๐Ÿ‘†