Dragonfly ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์ฑ ๋ฐ ์คํ ๋ฆฌ์ง ์์คํ ์ด ์ถ์๋์์ต๋๋ค. ์ด ์์คํ ์ ํค/๊ฐ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๊ณ ๋ก๋๊ฐ ๋ง์ ์ฌ์ดํธ์ ์์ ์ ๊ฐ์ํํ๊ธฐ ์ํ ๊ฒฝ๋ ์๋ฃจ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ DBMS์ ๋ํ ๋๋ฆฐ ์ฟผ๋ฆฌ ๋ฐ RAM์ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ์ ์์ต๋๋ค. Dragonfly๋ Memcached ๋ฐ Redis ํ๋กํ ์ฝ์ ์ง์ํ๋ฏ๋ก ๊ธฐ์กด ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ฝ๋ ์ฌ์์ ์์ด Memcached ๋ฐ Redis๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ Dragonfly๋ก ์ ์กํ ์ ์์ต๋๋ค.
Redis์ ๋น๊ตํ์ฌ Dragonfly๋ Amazon EC2 c6gn.16xlarge ํ๊ฒฝ์ ์ผ๋ฐ์ ์ธ ์ํฌ๋ก๋์์ 25๋ฐฐ ํฅ์๋ ์ฑ๋ฅ(์ด๋น 3.8๋ง ์์ฒญ)์ ๋ฌ์ฑํ์ต๋๋ค. AWS c6gn.16xlarge ํ๊ฒฝ์ Memcached์ ๋น๊ตํ์ฌ Dragonfly๋ ์ด๋น 4.7๋ฐฐ ๋ ๋ง์ ์ฐ๊ธฐ ์์ฒญ(3.8๋ง ๋ 806)๊ณผ ์ด๋น 1.77๋ฐฐ ๋ ๋ง์ ์ฝ๊ธฐ ์์ฒญ(3.7๋ง ๋ 2.1๋ง)์ ์ํํ ์ ์์์ต๋๋ค.
5GB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ ์คํธ์์ Dragonfly๋ Redis๋ณด๋ค 30% ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์๋ก ํ์ต๋๋ค. "bgsave" ๋ช ๋ น์ผ๋ก ์ค๋ ์ท์ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์ฆ๊ฐํ์ง๋ง ํผํฌ ์๊ฐ์๋ Redis๋ณด๋ค ๊ฑฐ์ 30๋ฐฐ๋ ์ ๊ฒ ์ ์ง๋์์ผ๋ฉฐ ์ค๋ ์ท ๊ธฐ๋ก ์์ ์์ฒด๋ ํจ์ฌ ๋น ๋ฆ ๋๋ค(ํ ์คํธ์์ Dragonfly์ ์ค๋ ์ท์ 42์ผ๋ก ์์ฑ๋์์ต๋๋ค). ์ด, Redis - XNUMX์ด).
๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ์ง ์๋(๋น๊ณต์ ) ๋ฉํฐ ์ค๋ ๋ ์ํคํ ์ฒ ๋๋ถ์ ๊ณ ์ฑ๋ฅ์ด ๋ฌ์ฑ๋ฉ๋๋ค. ์ฆ, ๊ฐ ์ค๋ ๋์๋ ์์ฒด ๋ฐ์ดํฐ ๋ถ๋ถ์ด ํฌํจ๋ ๋ณ๋์ ๋ณ๋ ํ๋ก์ธ์๊ฐ ํ ๋น๋์ด ๋ฎคํ ์ค ๋ฐ ์คํ ์ ๊ธ ์์ด ์๋ํฉ๋๋ค. ์ฌ๋ฌ ํค๋ก ์์ ํ ๋ ์์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฒฝ๋ VLL ์ ๊ธ์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์ผ์ข ์ ๋ถํ ๋ ํด์ ํ ์ด๋ธ์ ๊ตฌํํ ๋์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Dragonfly์ ์ผ๋ถ ๊ธฐ๋ฅ:
- ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ ํ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํฐ๋ก ์๋ ๊ต์ฒดํ๋ ์บ์ฑ ๋ชจ๋์ ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ๊ด๋ จ ์๋ค๊ณ ๊ฐ์ฃผ๋๋ ์๋ช ๋์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํฉ๋๋ค.
- ๋ค์ ์์ํ ํ ๋์ค์ ๋ณต๊ตฌํ ์ ์๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ๋ฆฌ์ง ์ํ๋ฅผ ๋์คํฌ๋ก ํ๋ฌ์ํ๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
- ์์คํ ๊ด๋ฆฌ๋ฅผ ์ํ HTTP ์ฝ์(TCP ํฌํธ 6379์ ๋ฐ์ธ๋ฉ)๊ณผ Prometheus์ ํธํ๋๋ ๋ฉํธ๋ฆญ ๋ฐํ์ฉ API๊ฐ ์์ต๋๋ค.
- Redis 185 ๋ฆด๋ฆฌ์ค์ ๊ธฐ๋ฅ๊ณผ ๊ฑฐ์ ๋์ผํ 5๊ฐ์ Redis ๋ช ๋ น์ ์ง์ํฉ๋๋ค.
- CAS(check-and-set)๋ฅผ ์ ์ธํ ๋ชจ๋ Memcached ๋ช ๋ น์ ์ง์ํฉ๋๋ค.
- ์ค๋ ์ท ์์ฑ์ ์ํ ๋น๋๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค.
- ์์ธก ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์๋น.
- Lua 5.4 ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค.
- ํด์, ์ธํธ, โโ๋ชฉ๋ก(ZSET, HSET, LIST, SETS ๋ฐ STRING) ๋ฐ JSON ๋ฐ์ดํฐ์ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํฉ๋๋ค.
- ๋ด๊ฒฐํจ์ฑ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํ ์คํ ๋ฆฌ์ง ๋ณต์ ๋ฅผ ์ง์ํฉ๋๋ค.
Dragonfly ์ฝ๋๋ C/C++๋ก ์์ฑ๋์์ผ๋ฉฐ BSL(Business Source License)์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. BSL ๋ผ์ด์ ์ค๋ Open Core ๋ชจ๋ธ์ ๋์์ผ๋ก MySQL์ ๊ณต๋ ์ฐฝ๋ฆฝ์๊ฐ ์ ์ํ ๊ฒ์ ๋๋ค. BSL์ ํต์ฌ์ ๊ณ ๊ธ ๊ธฐ๋ฅ ์ฝ๋๋ฅผ ์ฒ์์๋ ์์ ํ ์ ์์ง๋ง ์ถ๊ฐ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ ๊ฒฝ์ฐ์๋ง ํ๋์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ฐํํ๋ ค๋ฉด ์์ฉ ๋ผ์ด์ ์ค๋ฅผ ๊ตฌ์ ํด์ผ ํฉ๋๋ค. Dragonfly ํ๋ก์ ํธ์ ๋ํ ์ถ๊ฐ ๋ผ์ด์ ์ค ์กฐ๊ฑด์๋ ์ฝ๋๊ฐ 2.0๋ 15์ 2028์ผ์ Apache XNUMX ๋ผ์ด์ ์ค๋ก ์ด์ ๋์ด์ผ ํฉ๋๋ค. ์ง๊ธ๊น์ง ๋ผ์ด์ ์ค๋ ์๋น์ค์ ์ ํ์ ์ด์์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก๋ง ์ฝ๋ ์ฌ์ฉ์ ํ์ฉํ์ง๋ง Dragonfly์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ญํ ์ ํ๋ ์ ๋ฃ ํด๋ผ์ฐ๋ ์๋น์ค ์์ฑ์๋ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค.
Dragonfly 1.0 ๋ฒ์ ์ ๊ธฐ๋ณธ ์๋ฒ์์ ๋ณด์กฐ ์๋ฒ๋ก์ ๋ฐ์ดํฐ ๋ณต์ ์ง์ ๊ตฌํ์ผ๋ก ์ ๋ช
ํฉ๋๋ค. ๊ทธ๋ฌ๋ Dragonfly๋ฅผ Dragonfly ๋๋ Redis ๊ธฐ๋ฐ์ ๊ธฐ๋ณธ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๋ณด์กฐ ์คํ ๋ฆฌ์ง๋ก ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ณต์ ๊ด๋ฆฌ API๋ Redis์ ํธํ๋๋ฉฐ ROLE ๋ฐ REPLICAOF(SLAVEOF) ๋ช
๋ น ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ถ์ฒ : opennet.ru