์ „์ฒด ๊ธ€

์ฃผํ‚คํผ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ์šฉ๋„๋กœ๋งŒ ๊ฐ„๋žตํžˆ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์ž ๊ธฐ์กด์—๋Š” ์นดํ”„์นด ์‚ฌ์šฉ ์‹œ ์ฃผํ‚คํผ๊ฐ€ ํ•„์ˆ˜์˜€์œผ๋‚˜, ์ฃผํ‚คํผ ์‚ฌ์šฉ์‹œ ์ œ์•ฝ์‚ฌํ•ญ์ด๋‚˜ ํ•œ๊ณ„์„ฑ์— ์˜ํ•ด ์ฃผํ‚คํผ์™€ ์นดํ”„์นด์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ๋Š๊ณ  ์žˆ๋‹ค. Apache Kafka 2.8 ๋ฒ„์ „๋ถ€ํ„ฐ ์ฃผํ‚คํผ ๋Œ€์‹  kraft ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, 2.8.x ๋ฒ„์ „ ๋ถ€ํ„ฐ 3.2.x ๋ฒ„์ „๊นŒ์ง€๋Š” ๊ฐœ๋ฐœ ๋‹จ๊ณ„(์–ผ๋ฆฌ ์•ก์„ธ์Šค,early access) ์ž…๋‹ˆ๋‹ค. Kafka 3.3.1 ๋ฒ„์ „์—์„œ ๋ถ€ํ„ฐ Production(์šด์˜)์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ ๋ฐœํ‘œํ•˜๋ฉด์„œ KRaft ์ง€์›๊ณผ ZooKeeper ์ง€์›์ข…๋ฃŒ(์ œ๊ฑฐ)์— ๋Œ€ํ•œ ๋ฆด๋ฆฌ์ฆˆ ํƒ€์ž„๋ผ์ธ์„ ๋ฐœํ‘œ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ธŒ๋กœ์ปค ์ผ๋ฐ˜์ ์œผ๋กœ ์นดํ”„์นด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์‹œ์Šคํ…œ(์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜)์„ ๋งํ•œ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ ๋‹ค์ˆ˜์˜ ๋ธŒ๋กœ์ปค ์ค‘ ํ•œ๋Œ€๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์„ ํ•œ๋‹ค ํŒŒํ‹ฐ์…˜ ํ• ๋‹น, ์ •์ƒ ๋™..
๋ ˆ์ฝ”๋“œ ์นดํ”„์นด ๋ฐ์ดํ„ฐ ๋‹จ์œ„ ๊ตฌ์„ฑ์š”์†Œ ํ—ค๋” ํƒ€์ž„์Šคํƒฌํ”„ : ์‹œ๊ฐ„์„ ์ €์žฅํ•˜๋Š” ์šฉ๋„ ์˜คํ”„์…‹ : ๋ ˆ์ฝ”๋“œ์˜ ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ ๋ธŒ๋กœ์ปค์— ์ ์žฌ๋  ๋•Œ ์˜คํ”„์…‹์ด ์ง€์ •๋œ๋‹ค. ๋ฉ”์„ธ์ง€ ํ‚ค : ํŒŒํ‹ฐ์…”๋‹(๋ถ„๋ฅ˜)๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•ด ํŒŒํ‹ฐ์…”๋‹ํ•จ ํ‚ค๊ฐ€ ๋™์ผํ•˜๋ฉด ํ•ญ์ƒ ๊ฐ™์€ ํŒŒํ‹ฐ์…˜์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ ๋ณด์žฅ ๊ฐ€๋Šฅ ๋ฉ”์„ธ์ง€ ๊ฐ’ : ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํŒŒํ‹ฐ์…˜ ํ ๊ตฌ์กฐ๋กœ ๋ ˆ์ฝ”๋“œ(๋ฉ”์‹œ์ง€)๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ ์ฐธ๊ณ  : ํŒŒํ‹ฐ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ๋Š˜์–ด๋‚  ์ˆ˜๋Š” ์žˆ์–ด๋„ ์ค„์–ด๋“ค ์ˆ˜ ์—†๋‹ค. ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ค„์ด์ง€ ๋ชปํ•˜๋Š” ์ด์œ ๋Š” ์นดํ”„์นด๋ฅผ ์ด๋ฃจ๋Š” ์—ฌ๋Ÿฌ ์„ค๊ณ„ ์š”์ธ๋“ค์ด ๋ณตํ•ฉ์ ์œผ๋กœ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์ˆ˜ ๋ธŒ๋กœ์ปค์— ๋ถ„๋ฐฐ๋˜์–ด ์žˆ๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค์‹œ ์žฌ๋ฐฐ์—ดํ•˜๋Š” ๊ฒƒ์— ์ƒ๋‹นํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ง์”€๋“œ..
read() -> send() ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž read()๋ฅผ ์š”์ฒญํ•˜๋ฉด ๋””์Šคํฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด ์ปค๋„ Read Buffer์— ๋ณต์‚ฌ๋œ๋‹ค. Application์ด ์ปค๋„๋‹จ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— Application Buffer์—๋„ ๋ณต์‚ฌ๋œ๋‹ค. send()๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ปค๋„ Socet Buffer์— ํŒŒ์ผ์ด ๋ณต์‚ฌ๋œ๋‹ค. NIC ๋ฒ„ํผ๋กœ ๋ณต์‚ฌ๋œ๋‹ค. ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋‹ค๋Ÿ‰ ๋ฐœ์ƒ ์‚ฌ์šฉ์ž๊ฐ€ transferTo() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ ์ „์†ก์„ ์š”์ฒญํ•œ๋‹ค. read()์™€ send() ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง„ ํ˜•ํƒœ์˜ ์‹œ์Šคํ…œ ์ฝœ์ด๋‹ค. ๋””์Šคํฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด ์ปค๋„ Read Buffer์— ๋ณต์‚ฌ๋œ๋‹ค. ์ปค๋„ ๋ชจ๋“œ์—์„œ ์œ ์ € ๋ชจ๋“œ๋กœ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ Socket buffer๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค. Socket buffer์— ๋ณต์‚ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ D..
์นดํ”„์นด ๋งํฌ๋“œ์ธ ๋‚ด๋ถ€ ์ด์Šˆ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋งŒ๋“ค์–ด์ง„ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ (์Šค์นผ๋ผ๋กœ ๋งŒ๋“ค์–ด์ง) ์ด๋ฒคํŠธ : ํŠน๋ณ„ํ•œ ๋ฐ์ดํ„ฐ ์ƒํƒœ์˜ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ : ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ์˜ ์ง€์†์ ์ธ ํ๋ฆ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์—๋Š” ์‹œ์ž‘๊ณผ ๋์ด ์—†๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ : ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ : ๋‹ค์–‘ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ ํ•ฉํ•œ ์žฅ์†Œ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ  ๊ณ ์„ฑ๋Šฅ TCP ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ๋กœ ํ†ต์‹ ํ•˜๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋กœ ๊ตฌ์„ฑ๋œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ โ‰๏ธTCP ๊ด€๋ จ ์ด์Šˆ https://jinhanchoi1.medium.com/kafkaconsumer-and-tcp-connection-5a2c8b197732 KafkaConsumer๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ NetworkClient๋ฅผ ํ†ตํ•ด Req..
UDP L4 Transport ํ”„๋กœํ† ์ฝœ ๋‹จ์ˆœํ•˜๊ณ  ๋น ๋ฅด๋‹ค. ์—ฐ๊ฒฐ์ง€ํ–ฅ X / ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์ฆ X / ์ˆœ์„œ๋ณด์žฅ X IP์—์„œ Port์™€ ์ฒดํฌ์„ฌ๋งŒ ์ถ”๊ฐ€๋œ ๊ฐœ๋… ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•จ TCP L4 Transport ํ”„๋กœํ† ์ฝœ ๋ฐ์ดํ„ฐ ๋‹จ์œ„ : ์„ธ๊ทธ๋จผํŠธ ๋…ผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์ž„์„ ๊ธฐ์–ตํ•˜์ž. LAN ์ผ€์ด๋ธ”์„ ๋ถ„๋ฆฌํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•ด๋„ TCP ์—ฐ๊ฒฐ์€ ์ผ์ •์‹œ๊ฐ„๋™์•ˆ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. ๋ฌด์„  ์—ฐ๊ฒฐ์„ ์ƒ๊ฐํ•˜๋ฉด ๋” ์‰ฝ๋‹ค ์ปค๋„ ์†Œ์ผ“์€ ๋‘ ๊ฐœ์˜ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค ์†ก์‹ ์šฉ์œผ๋กœ ์ค€๋น„ํ•œ send socket buffer ์ˆ˜์‹ ์šฉ์œผ๋กœ ์ค€๋น„ํ•œ receive socket buffer ์†Œ์ผ“๊ณผ ์—ฐ๊ฒฐ๋œ TCP Control Block(TCB) ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ๋‹ค. TCB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” connection state(LISTEN, ESTABLISHED, TIME_WAIT ..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
๐Ÿ•