Topic & Partition Internals

ํŒŒํ‹ฐ์…˜์€ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ํŒŒ์ผ์ด ์•„๋‹Œ, ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ(Log Segment) ๋ผ๋Š” ์—ฌ๋Ÿฌ ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋ฉฐ, ์ด ์„ค๊ณ„๊ฐ€ ์นดํ”„์นด์˜ ๋น ๋ฅธ ์ž…์ถœ๋ ฅ๊ณผ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

ํŒŒํ‹ฐ์…˜์˜ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ

ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์€ ๋ธŒ๋กœ์ปค์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ํ† ํ”ฝ๋ช…-ํŒŒํ‹ฐ์…˜๋ฒˆํ˜ธ ํ˜•ํƒœ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋‚ด๋ถ€์—๋Š” ํŒŒํ‹ฐ์…˜์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฐ๋‚ด์–ด ์ €์žฅํ•˜๋Š” ๋‹ค์ˆ˜์˜ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

  • ๊ฒฝ๋กœ ์˜ˆ์‹œ: Kafka ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด /my-topic-0, /my-topic-1 ๋“ฑ

  • ๊ตฌ์„ฑ: ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—๋Š” 00000000000000000000.log, 00000000000000000000.index ์™€ ๊ฐ™์€ ํŒŒ์ผ๋“ค์ด ์Œ์œผ๋กœ ์กด์žฌ

    • ์ด ํŒŒ์ผ ์ด๋ฆ„์˜ ์ˆซ์ž๋Š” ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ์˜ ์‹œ์ž‘ ์˜คํ”„์…‹์„ ์˜๋ฏธ

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ตฌ์„ฑ

์„ธ๊ทธ๋จผํŠธ๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, ํ˜„์žฌ ์“ฐ๊ธฐ ์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š” ๋‹จ ํ•˜๋‚˜์˜ ํ™œ์„ฑ ์„ธ๊ทธ๋จผํŠธ์™€, ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ ์ด์ „ ์„ธ๊ทธ๋จผํŠธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋‹ค์Œ ํŒŒ์ผ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  • .log ํŒŒ์ผ(๋ฐ์ดํ„ฐ ํŒŒ์ผ)

    • ์‹ค์ œ ๋ฉ”์‹œ์ง€ ๋ฐ์ดํ„ฐ(ํ‚ค, ๊ฐ’, ํƒ€์ž„์Šคํƒฌํ”„, ํ—ค๋” ๋“ฑ)๊ฐ€ ์ €์žฅ๋˜๋Š” ํŒŒ์ผ

    • ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ์˜ ๋์—๋งŒ ์ถ”๊ฐ€๋˜๋Š” Append-Only ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๋ก

      • ๋””์Šคํฌ ํ—ค๋“œ์˜ ์›€์ง์ž„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์ˆœ์ฐจ ์“ฐ๊ธฐ(Sequential I/O)๋ฅผ ์œ ๋ฐœํ•˜์—ฌ ๋งค์šฐ ๋น ๋ฅธ ์“ฐ๊ธฐ ์„ฑ๋Šฅ ๋ณด์žฅ

  • .index ํŒŒ์ผ(์˜คํ”„์…‹ ์ธ๋ฑ์Šค)

    • .log ํŒŒ์ผ์—์„œ ํŠน์ • ์˜คํ”„์…‹์˜ ์œ„์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์Šค ํŒŒ์ผ

    • ๋ชจ๋“  ๋ฉ”์‹œ์ง€์˜ ์˜คํ”„์…‹์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ผ์ • ๊ฐ„๊ฒฉ๋งˆ๋‹ค (์ƒ๋Œ€ ์˜คํ”„์…‹, ๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์œ„์น˜) ์Œ์„ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ

    • ์ปจ์Šˆ๋จธ๊ฐ€ ํŠน์ • ์˜คํ”„์…‹์„ ์š”์ฒญํ•˜๋ฉด, ์นดํ”„์นด๋Š” ์ด ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋Œ€๋žต์ ์ธ ์œ„์น˜๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ฐพ์€ ํ›„ ํ•ด๋‹น ์œ„์น˜๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์Šค์บ”ํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ์กฐํšŒ

      • ์ „์ฒด ํŒŒ์ผ์„ ์Šค์บ”ํ•˜๋Š” ๋น„ํšจ์œจ์„ ๋ฐฉ์ง€

  • .timeindex ํŒŒ์ผ(ํƒ€์ž„์Šคํƒฌํ”„ ์ธ๋ฑ์Šค)

    • ์˜คํ”„์…‹ ์ธ๋ฑ์Šค์™€ ์œ ์‚ฌํ•˜๊ฒŒ, (ํƒ€์ž„์Šคํƒฌํ”„, ์ƒ๋Œ€ ์˜คํ”„์…‹) ์Œ์„ ์ €์žฅํ•˜์—ฌ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›

๊ณ ์„ฑ๋Šฅ์˜ ์›๋ฆฌ

์œ„์™€ ๊ฐ™์€ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๋•๋ถ„์— ์นดํ”„์นด์˜ ๊ณ ์„ฑ๋Šฅ์„ ์ด๋Œ์–ด๋‚ด๋Š” ์—ฌ๋Ÿฌ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์“ฐ๊ธฐ ์„ฑ๋Šฅ: ์ˆœ์ฐจ I/O

    • ๋ชจ๋“  ์“ฐ๊ธฐ ์ž‘์—…์€ ํ™œ์„ฑ ์„ธ๊ทธ๋จผํŠธ์˜ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ์ˆœํ•œ ์ž‘์—…

    • ๋””์Šคํฌ์— ๊ฐ€ํ•ด์ง€๋Š” ๋ถ€ํ•˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์ˆœ์ฐจ I/O์ด๋ฏ€๋กœ, ์นดํ”„์นด๋Š” ๋†’์€ ์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์œ ์ง€ ๊ฐ€๋Šฅ

  • ์ฝ๊ธฐ ์„ฑ๋Šฅ: ํŽ˜์ด์ง€ ์บ์‹œ / ์ œ๋กœ ์นดํ”ผ

    • ๋ฐ์ดํ„ฐ ์บ์‹ฑ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(JVM) ๋ ˆ๋ฒจ์ด ์•„๋‹Œ, ์šด์˜์ฒด์ œ(OS)์˜ ํŽ˜์ด์ง€ ์บ์‹œ(Page Cache)๋ฅผ ํ™œ์šฉ

      • ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)์˜ ํŽ˜์ด์ง€ ์บ์‹œ์— ์ €์žฅ๋˜์–ด, ์ดํ›„ ๋™์ผ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ๋””์Šคํฌ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌ

    • ํŽ˜์ด์ง€ ์บ์‹œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์ „์†กํ•  ๋•Œ ์ œ๋กœ ์นดํ”ผ(Zero-Copy) ๊ธฐ์ˆ  ์‚ฌ์šฉ

      • ์ด๋Š” S ์ปค๋„ ์˜์—ญ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜์—ญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ , ์ปค๋„ ๋ฒ„ํผ์—์„œ ๋„คํŠธ์›Œํฌ ๋ฒ„ํผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹

      • ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์™€ CPU ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ์ค„์—ฌ ์ฝ๊ธฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ

๋กœ๊ทธ ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ

์„ธ๊ทธ๋จผํŠธ ๋‹จ์œ„์˜ ๊ตฌ์กฐ๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌ์—๋„ ํฐ ์ด์ ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ๋กœ๊ทธ ๋ณด์กด(Log Retention)

    • ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ, ํŠน์ • ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„ ์ง€์šฐ๋Š” ๋ณต์žกํ•œ ๊ณผ์ • ๋Œ€์‹  ๋ณด์กด ๊ธฐ๊ฐ„(retention.ms)์ด๋‚˜ ์šฉ๋Ÿ‰(retention.bytes)์ด ์ง€๋‚œ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ ์ž์ฒด ์‚ญ์ œ

    • ํŒŒ์ผ ๋‹จ์œ„์˜ ์‚ญ์ œ๋Š” OS์—์„œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…

  • ๋กœ๊ทธ ์••์ถ•(Log Compaction)

    • ์‹œ๊ฐ„์ด ์•„๋‹Œ ๋ฉ”์‹œ์ง€์˜ ํ‚ค(Key)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๋Š” ์ •์ฑ…

    • ๋กœ๊ทธ ์••์ถ•์€ ๊ฐ ํ‚ค์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์˜ ๊ฐ’๋งŒ ๋‚จ๊ธฐ๊ณ  ์ด์ „ ๋ฒ„์ „์˜ ๊ฐ’๋“ค์„ ์ œ๊ฑฐ

    • ํŠน์ • ํ‚ค์˜ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์‚ฌ์šฉ์ž์˜ ๋งˆ์ง€๋ง‰ ํ”„๋กœํ•„ ์ •๋ณด, ์ƒํ’ˆ์˜ ํ˜„์žฌ ๊ฐ€๊ฒฉ)์— ์œ ์šฉ

Last updated

Was this helpful?