๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“จ Apache Kafka

[์•„ํŒŒ์น˜ ์นดํ”„์นด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ž๋ฐ”] 4-1์žฅ ํ† ํ”ฝ๊ณผ ํŒŒํ‹ฐ์…˜

by GroovyArea 2023. 5. 5.

ํ† ํ”ฝ๊ณผ ํŒŒํ‹ฐ์…˜

  • ํ† ํ”ฝ์ด ์‚ฌ๋ผ์ง€๋ฉด ์นดํ”„์นด ํŒŒ์ดํ”„ ๋ผ์ธ์€ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ.

์ ์ • ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜

  • ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ์นดํ”„์นด ์„ฑ๋Šฅ๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค.
  • ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์šด์˜ํ•˜์ž.

ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•  ๋•Œ ๊ณ ๋ คํ•  ์ 

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

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ์ž

  1. ์ปจ์Šˆ๋จธ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋Š˜๋ฆฌ๊ธฐ
    • ์ปจ์Šˆ๋จธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„๋ฅผ ์Šค์ผ€์ผ์—…
    • GC ํŠœ๋‹
    • ์ปจ์Šˆ๋จธ๋Š” (S3, ํ•˜๋‘ก, ์˜ค๋ผํด ๋“ฑ๋“ฑ) ์˜ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™๋˜๋ฏ€๋กœ, ์ผ์ • ์ˆ˜์ค€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ด๋Š”๋ฐ, ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
  2. ์ปจ์Šˆ๋จธ ์ถ”๊ฐ€๋กœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋Š˜๋ฆฌ๊ธฐ => ์ œ์ผ ๋ฒ ์ŠคํŠธ
    • ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฐ๋งŒํผ ์ปจ์Šˆ๋จธ๋ฅผ ์ถ”๊ฐ€
    • ํ”„๋กœ๋“€์„œ์˜ ๋ฐœํ–‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์ดˆ๋‹น 1000 Records
    • ์ปจ์Šˆ๋จธ๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ดˆ๋‹น 100 Records
    • ์ตœ์†Œ ํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜ 10๊ฐœ
  • ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋งŒ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์€ ๋งˆ๋ƒฅ ์ข‹์ง„ ์•Š๋‹ค.
  • ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฏ€๋กœ์„œ ์ปจ์Šˆ๋จธ์™€ ๋ธŒ๋กœ์ปค์˜ ๋ถ€๋‹ด์ด ์ปค์ง„๋‹ค.

ํ† ํ”ฝ ์ •๋ฆฌ ์ •์ฑ…


ํ† ํ”ฝ ์‚ญ์ œ ์ •์ฑ…

  • ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„๋กœ ์ง„ํ–‰

  • ์„ธ๊ทธ๋จผํŠธ๋ž€?

    • ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ช…์‹œ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‹จ์œ„
    • ํŒŒํ‹ฐ์…˜๋งˆ๋‹ค ๋ณ„๊ฐœ๋กœ ์ƒ์„ฑ
    • ์„ธ๊ทธ๋จผํŠธ์˜ ํŒŒ์ผ ์ด๋ฆ„์€ ์˜คํ”„์…‹ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
  • ์„ธ๊ทธ๋จผํŠธ๋Š” ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰จ segment.bytes ์˜ต์…˜์œผ๋กœ 1๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ ์กฐ์ •

  • ํ•ด๋‹น ์˜ต์…˜ ํฌ๊ธฐ๋ณด๋‹ค ์ปค์งˆ ๊ฒฝ์šฐ, ๊ธฐ์กด ์ ์žฌ์ค‘์ธ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์„ ๋‹ซ๊ณ , ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์—ด์–ด ์ €์žฅ

  • ์‚ญ์ œ ์ •์ฑ…์ด ์‹คํ–‰๋˜๋Š” ์‹œ์ ์€ ์‹œ๊ฐ„ ๋˜๋Š” ์šฉ๋Ÿ‰์ด ๊ธฐ์ค€

  • retension.ms ์˜ต์…˜์œผ๋กœ ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ธฐ๊ฐ„ ์„ค์ •

  • ์นดํ”„์นด๋Š” ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์‹œ๊ฐ„๊ณผ retension ์„ ๋น„๊ต

  • ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์‹œ๊ฐ„์ด ์ด๋ฅผ ๋„˜๊ธธ ๊ฒฝ์šฐ ์„ธ๊ทธ๋จผํŠธ ์‚ญ์ œ

  • bytes ๋Š” ํ† ํ”ฝ์˜ ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œ์–ด

  • ๋„˜๊ธธ ๊ฒฝ์šฐ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ๋“ค ์‚ญ์ œ => ์‚ญ์ œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๋ถˆ๊ฐ€


ํ† ํ”ฝ ์••์ถ• ์ •์ฑ…

  • ๋ฉ”์‹œ์ง€ ํ‚ค ๋ณ„๋กœ ํ•ด๋‹น ๋ฉ”์‹œ์ง€ ํ‚ค์˜ ๋ ˆ์ฝ”๋“œ ์ค‘ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  • ์••์ถ• ์ •์ฑ…์ด๋ž€ ์•กํ‹ฐ๋ธŒ ์„ธ๊ทธ๋จผํŠธ ์ œ์™ธ ๋‚˜๋จธ์ง€ ์„ธ๊ทธ๋จผํŠธ๋“ค์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  • ์••์ถ• ์‹œ์ ์€ min.cleanable.clity.ratio ์˜ต์…˜ ์„ค์ • ๊ฐ€๋Šฅ
  • ์ด ์˜ต์…˜ ๊ฐ’์€ ์•กํ‹ฐ๋ธŒ ์„ธ๊ทธ๋จผํŠธ ์ œ์™ธ ์„ธ๊ทธ๋จผํŠธ์— ๋‚จ์€ ๋ฐ์ดํ„ฐ์˜ tail ์˜์—ญ ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜์™€ head ์˜์—ญ ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜์˜ ๋น„์œจ

  • tail ์˜์—ญ์˜ ๋ ˆ์ฝ”๋“œ = clean log
  • ์••์ถ•์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ, ์ค‘๋ณต๋œ ๋ฉ”์‹œ์ง€ ํ‚ค๊ฐ€ ์—†์Œ
  • head ์˜์—ญ ๋ ˆ์ฝ”๋“œ = dirty log
  • ์••์ถ• ๋˜๊ธฐ ์ „ ๋ ˆ์ฝ”๋“œ๋“ค, ์ค‘๋ณต๋œ ๋ฉ”์‹œ์ง€ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌ
  • ํ† ํ”ฝ์˜ ์••์ถ•์€ ratio ์˜ต์…˜ ๊ฐ’์„ ๋”ฐ๋ฅด๋Š”๋ฐ, 0.5๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ dirty log ์˜ ๋น„์œจ์ด ์ด๋ฅผ ๋„˜๊ธธ ์‹œ ์••์ถ•์„ ์ˆ˜ํ–‰
  • ์˜ต์…˜ ๊ฐ’์ด ๋‚ฎ์„ ์ˆ˜๋ก ์••์ถ•์€ ์ž์ฃผ ๋ฐœ์ƒ => ๋ธŒ๋กœ์ปค์— ๋ถ€๋‹ด

ISR (In-Sync-Replicas)

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