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?