2023. 4. 17. 04:18ใComputerScience/FullStackProgramming
Kernel vs Application
- ๊ณผ๊ฑฐ - ์ ํต์ ์ธ ์ธํฐ๋ท ํ๋กํ ์ฝ์ ์ด์์ฒด์ ๋ด๋ถ ์ปค๋์ ์์น
- ํ๋ - ์ด์์ฒด์ ์์์ ์ดํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ผ๋ก ์ฃผ๋ก ์ ๊ณต
์์น์ ๋ฐ๋ฅธ ์ฅ๋จ์ ?
- ์ฑ๋ฅ (datarate, memory) ์ธก๋ฉด
- ์ปค๋์ ์ํํธ์จ์ด๋ ์ฑ๋ฅ๋ ๋๊ณ , ๊ฒ์ฆ๋ ์ฝ๋
- ๊ฐ๋ฐ ๋ฐ ๋ฐ์ ์ฉ์ด์ฑ (dev & user community) ์ธก๋ฉด
- ์ปค๋์ ์ฝ๋ ๋ฃ์ผ๋ ค๋ฉด, OS ํ์ฌ์ ๋ถํํ๋ค
- ๋ด๊ฐ ์ง์ ๋ด๊ฐ ์ธ๊ฒ, ํ์ํ ์ฌ๋์๊ฒ ๊ณต๊ฐํ ๊ฑฐ์ผ
- ๊ฒฐ๊ตญ ์ด ์ฉ์ดํจ์ ๋ฐฉ์ ์ด ์ฐํ๋ค.
2010๋
๋ถํฐ ๋คํธ์ํฌ ๊ธฐ์ ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ด ๋๋ฌ๋๊ธฐ ์์
๊ฐ๋ฐ์ ์
์ฅ์์ 1~4 layer ์ ๊ทผ -> OS ๋ด๋ถ์ ์ฝ๋๋ฅผ ๋ถ๋ฌ ์ฌ์ฉํ๋ค
์ด์์ฒด์ ๋ด๋ถ์ ์์ค ์ฝ๋, ์ปค๋ ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด -> MS, ๋ฆฌ๋
์ค ํ์ด๋ฐ์ด์
ํ๊ฐ
๊ทธ๋ฅ ์์ฉ(application) ๊ณ์ธต์์ ํต์ ํ๋กํ ์ฝ์ ์ง์!
๋ฆฌ๋
์ค ์ปค๋๊ณผ ๋ฌด๊ดํ๊ฒ, OS์ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ์
์ปค๋ ๋ด๋ถ์ ์กด์ฌ X -? ์ดํ๋ฆฌ์ผ์ด์
level
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ STL๋ก ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ ํต์ ์ธ ์ธํฐ๋ท ํ๋กํ ์ฝ
- Socket API์ Kernel๊ณผ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ ๊ณ ๋ฆฌ
- Linux๋ Unix๋ฅผ ํฌํจํ POSIX ๊ณ์ด ์ด์์ฒด์ ๋ ์์ผ์ file descriptor๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ธ์ถํจ
- read / write ์์ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ง ๊ฐ๋ฅ -> ๋ชจ๋ ํ์ผ์ฒ๋ผ ์ทจ๊ธ
- POSIX ๊ณ์ด์ ์ด์์ฒด์ ์์ ์์ผ์ ํ์ผ์ ํ ์ข ๋ฅ์
- ํ์ผ ๊ณ์ธต์ ๋จ์ํ ๊ฒ์ฌ๋ง ํ๊ณ , ํ์ผ ๊ตฌ์กฐ์ฒด์ ์ฐ๊ฒฐ๋ ์์ผ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ์์ผ ํจ์๋ฅผ ํธ์ถํจ
ZeroMQ (ØMQ, 0MQ, or zmq)
- Application Layer Messaging Library
- ์ปดํจํฐ ๊ฐ ์ ๋ณด ์ฃผ๊ณ ๋ฐ๊ธฐ & ์ปดํจํฐ ๋ด ์ ๋ณด ์ฃผ๊ณ ๋ฐ๊ธฐ (๋ฉ๋ชจ๋ฆฌ ํต์ , ํ๋ก๋ ์ค ๊ฐ ์ ๋ณด ๊ตํ) ๋ชจ๋ ๊ฐ๋ฅ
- ๋๋ถ๋ถ์ ์ด์์ฒด์ ์ ์ฌ๋ผ๊ฐ ์ ์๋๋ก ํฌํ
- 1:1 ํต์ ์ฝ๋๋ฅผ ํญ์ ๊ฐ๋ฐ์๋ค์ด N:M์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค
- ์ด๋ฅผ ์ ๋๋ก ํ๋ ๋ง๋ค์ -> ์ด๊ฒ์ผ๋ก ์์๋ ZMQ
- N:M ํ๋ก๊ทธ๋๋ฐ -> ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- zmq pattern
- ๋ณธ์ธ์๊ฒ ๋ง๋ ๊ทธ๋ฆผ์ ์ ํ
- 1:1 ๋ฐ๋ฐ๋ฅ๋ถํฐ ์ฌ๋ผ์ค๋ ์ฝ๋๋ ์์ง๋ ๋๋ค
- ์ฒ์๋ถํฐ N:M์ ์ง์
send() -> ์์์ subscriber์๊ฒ ํ๋ฒ์ ๋ฉ์ธ์ง๋ฅผ ๋ค ๋ณด๋ธ๋ค
์ผ์ผ์ด ๋ด๊ฐ ์นด์ดํ ํ๊ณ , ๊ธฐ๋กํ๊ณ , ๋ณต์ฌํ๋ ํ์๋ฅผ ๋ชจ๋ ์ง์ - 1:1๋ถํฐ N:m, fan-in, fan-out ๋ ๋ชจ๋ ์ง์
fan in/out ์น ๋ชจ์์ ์ฃผ๋ ๊ฒ : divide and conquer
๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ๋ ์ ๋ณด๋ฅผ ํ๋๋ก ๋ชจ์ผ๋ ๊ฒ
Zero Message Queue์ ํน์ง
- ZERO means:
zero broker (brokerless)
and zero latency, zero cost (it’s free), zero administration - ์ค์ ํต์ ํ๋ ๋ธ๋ก์ปค ์์ด, ์ ๋ณด ๋ณด๋ผ ์ ๊ฐ ๋ฐ์ ์ ํํ
์ง์ ๋ณด๋ด๋ฉด ๋จ
TCP ์์ผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์๊ณผ ๋ค๋ฅด์ง ์๋ค.
cf) ์ค์ ์๋ฒ๊ฐ ์์ด์ DM ๋ฐ์ก
-> ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ์๋ฒ๊ฐ, ๋๋ฅผ ๋์ ํด์ ๋ณด๋ด์ค (๋ธ๋ก์ปค 0 -> ๋๋น) - High performance asynchronous messaging library
- Aimed at use in distributed or concurrent applications
์ค์ ์์ผ๋ ๊ฐ์ ์์์ ํ๋ฉด ๋จ, ํจํด์ผ๋ก ๋ณด๋ฉด ๋ถ์ฐ ๋ณ๋ ฌ์ฒ๋ฆฌ ์ด๋ฏธ ๊ตฌํ๋จ - No dedicated message broker
- Resemble Berkeley socket API
์ต๋ํ ๋ฒํด๋ฆฌ ๋ฒ์ TCP ๋ชจ์ฌํ๋ ค๊ณ ๋ ธ๋ ฅํจ - Supports messaging patterns: request/reply, publish/ subscriber, and others
- Run over a variety of transports: TCP/UDP, in-process, inter-process, multicast, web socket and more
- Guide for 60+ diagrams and 750 examples (@2021.07)
'ComputerScience > FullStackProgramming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์คํ] ZMQ Pattern (0) | 2023.04.18 |
---|---|
[ํ์คํ] Zero message queue (ZMQ) (0) | 2023.04.17 |
[ํ์คํ] TCP ๋น๋๊ธฐ์ socket server programming (1) | 2023.04.16 |
[ํ์คํ] TCP Socket programming (1:1) (0) | 2023.04.12 |
[ํ์คํ] TCP - connection-oriented protocol (1) | 2023.04.12 |