Community

๐ŸŽ ์นดํ”„์นด๋Š” ์™œ ๋น ๋ฅผ๊นŒ?

์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ณ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ค‘์‹ฌ์ด ๋˜๋Š” ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋ณดํ†ต kafka, rabbitmq, redis (pub/sub) ๋“ฑ์˜ ์†”๋ฃจ์…˜์„ ๋„์ž…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ kafka ๋Š” GC ๋กœ ์ธํ•ด ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” JVM ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  VM ์žฅ๋น„์—์„œ๋„ ๊ฝค ๊ดœ์ฐฎ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์•Œ์•„๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธ€์ด ์žˆ์–ด ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ธ€์—์„œ ์ •๋ฆฌํ•œ Kafka ๊ฐ€ ๋น ๋ฅธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ์ €์ง€์—ฐ I/O ์‚ฌ์šฉ ์ „์†ก๋ฐ›์€ ๋ฉ”์‹œ์ง€๋Š” RAM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‚ฎ์ถ”๊ณ , DISK๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉ. ๐Ÿ“Œ ์ˆœ์ฐจ์  I/O ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ์šฉ (log) ๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€๋Š” ๋๋‹จ์—์„œ ์ด๋ค„์ง€๊ณ , ๋ฉ”์‹œ์ง€ ์ฝ๊ธฐ๋Š” consumer ๋งˆ๋‹ค ๋ณ„๋„์˜ ํฌ์ธํ„ฐ๋ฅผ ๋‘์–ด ํƒ์ƒ‰ ์‹œ๊ฐ„์„ ํ”ผํ•˜๋Š” 'log' ๋ผ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์‚ฌ์šฉ. ๐Ÿ“Œ zero-copy ์ ์šฉ ์–ดํ”Œ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์—†์ด ์ปค๋„์— ์ง์ ‘ ์ „๋‹ฌํ•˜์—ฌ ํšจ์œจ์„ ๋†’์ž„. ๐Ÿ“Œ ์ˆ˜ํ‰ ํ™•์žฅ ์‹œ์Šคํ…œ ๋‹จ์ผ ์ฃผ์ œ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๋กœ ๋ถ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ. ๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฐ ์ผ๊ด„ ์ฒ˜๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ์ „์†ก/๊ด€๋ฆฌ ํšจ์œจ์„ ๋†’์ด๊ณ , ์ด๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ณด๊ด€/์ „์†กํ•˜๋Š” ๊ตฌ์กฐ. ํŠนํžˆ ๋‹ค๋ฅธ๊ฒƒ๋ณด๋‹ค zero-copy ์— ๋Œ€ํ•ด ๊ฝค๋‚˜ ๊นŠ๊ณ  ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š” ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ๋ฒค์น˜๋งˆํฌ๋ฅผ ๋‹ค๋ฃฌ ์•„ํ‹ฐํด๋“ค์„ ์ค‘๊ฐ„์ค‘๊ฐ„ ์ฒจ๋ถ€ํ•˜์—ฌ ์ฝ๋Š” ์žฌ๋ฏธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒจ๋ถ€๋“œ๋ฆฐ ์›๋ฌธ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ“š ์›๋ฌธ * https://frogred8.github.io/docs/034_why_is_kafka_fast/

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค