๋ฉํฐ์ค๋ ๋ฉ์ ์ง์ํ๊ณ ๋น๋๊ธฐ ๋ชจ๋์์ ๋คํธ์ํฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Rust ์ธ์ด๋ก ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋๋ก ์ค๊ณ๋ Tokio ํ๋ซํผ ๋ฒ์ 1.13.0์ด ์ถ์๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ Rust๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. ์ ๋ฒ์ ์ ๋ฌธ์ ํ์ฅ, ๋คํธ์ํฌ ํ์ ์์คํ ๋ฐ ๋๊ธฐํ ์์คํ ์ ์ฌ๋ฌ ์์ ์ฌํญ์ ํ์ํฉ๋๋ค.
Tokio์๋ ๋ค์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
- ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์ค๋ ๋(๋ณ๋ ฌ ์คํ ์ปจํ ์คํธ์์)์๋ง ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ์ฌ ์๋ํจ์ผ๋ก์จ ์์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ ์์ด ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์์ ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ ์กฐ๊ฑด์ ๋ฐฉ์งํ๋ ๋ฉํฐ ์ค๋ ๋ I/O ์ค์ผ์ค๋ฌ
- epoll, kqueue ๋ฐ IOCP์ ๊ฐ์ ๋ค์ํ ์ด์ ์ฒด์ ์์ ์ ๊ณต๋๋ ์ฐ๊ฒฐ ๋ค์คํ ๋ฉ์ปค๋์ฆ๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฑ์๋
- ๋น๋๊ธฐ TCP ๋ฐ UDP ์์ผ ๊ตฌํ์ ํตํ ์ ํ ๋ฐ ๋ฐ์ธ๋ฉ.
- ๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ, ํ์ดํ ๋ฐ ์๊ฐ ์ด๊ณผ๋ฅผ ํฌํจํ์ฌ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ํํ๊ธฐ ์ํ ๋๊ตฌ์ ๋๋ค.
- TCP/UDP ์์ผ, ํ์ผ ์์ , ์ ํธ ๋ฐ ํ๋ก์ธ์ค ์ ์ด๋ฅผ ๋ค๋ฃจ๋ ๋น๋๊ธฐ I/O๋ฅผ ์ํํ๊ธฐ ์ํ API์ ๋๋ค.
๊ฐ๋ฐ์๋ค์ ๋ฒ ์ด๋ฉํ์์์ ์์ ์๋์ ํ์ ํ๋ ๊ณ ์ฑ๋ฅ, Rust ์ธ์ด์ ์ ํ ์์คํ ๋ฐ ๋ณ๋ ฌ์ฑ ๋ชจ๋ธ์ด ์ ๊ณตํ๋ ํ์ํ ํ์ฅ์ฑ๊ณผ ์์ ์ฑ ๋ฑ ์ ํ์ ๊ธฐ๋ฅ์ ์ฃผ๋ชฉํฉ๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ์๋ AWS, Azure, Comcast, Dropbox ๋ฐ Facebook ๋ํ๋ฅผ ํฌํจํ์ฌ 500๋ช ์ด์์ ์ฐธ๊ฐ์๊ฐ ์์ต๋๋ค. Tokio์ ์ข ์์ฑ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ด ํฌํจ๋ฉ๋๋ค.
- hyper: Rust์ฉ HTTP/1 ๋ฐ HTTP/2์ ๋น ๋ฅด๊ณ ์์ ํ ๊ตฌํ;
- warp: ๊ฒฝ๋ ํ๋ ์์ํฌ ์น ์๋ฒ๋น ๋ฅธ ์์ ์๋์ ์ค์ ์ ๋ก๋๋ค.
- ์ถ์ : ๋น๋๊ธฐ์ฑ์ ๊ณ ๋ คํ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ถ์ ๋ฐ ์ง๋จ์ ์ํ ํ๋ ์์ํฌ์ ๋๋ค.
- rdbc: MySQL, Postgres ๋ฐ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Rust ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- bytes: ํจ์จ์ ์ธ ๋ฐ์ดํธ ๋ฒํผ๋ฅผ ํฌํจํ์ฌ ๋ฐ์ดํธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
์ถ์ฒ : opennet.ru
