Dragonfly ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์ฑ ์์คํ ์ ์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์ด Memcached ๋ฐ Redis ํ๋กํ ์ฝ์ ์ง์ํ์ง๋ง ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ๊ณผ ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ก ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด ์์คํ ์ ํค/๊ฐ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ฉฐ, DBMS์ ๋ํ ๋๋ฆฐ ์ฟผ๋ฆฌ์ RAM์ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ ๋ก๋๊ฐ ๋ง์ ์ฌ์ดํธ์ ์์ ์๋๋ฅผ ๋์ด๋ ๊ฒฝ๋ ์๋ฃจ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Dragonfly ์ฝ๋๋ C/C++๋ก ์์ฑ๋์์ผ๋ฉฐ BSL(Business Source License)์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
BSL ๋ผ์ด์ ์ค๋ Open Core ๋ชจ๋ธ์ ๋์์ผ๋ก MySQL์ ๊ณต๋ ์ฐฝ๋ฆฝ์๊ฐ ์ ์ํ ๊ฒ์ ๋๋ค. BSL์ ํต์ฌ์ ๊ณ ๊ธ ๊ธฐ๋ฅ ์ฝ๋๋ฅผ ์ฒ์์๋ ์์ ํ ์ ์์ง๋ง ์ถ๊ฐ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ ๊ฒฝ์ฐ์๋ง ํ๋์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ฐํํ๋ ค๋ฉด ์์ฉ ๋ผ์ด์ ์ค๋ฅผ ๊ตฌ์ ํด์ผ ํฉ๋๋ค. Dragonfly ํ๋ก์ ํธ์ ์ถ๊ฐ ๋ผ์ด์ ์ค ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋๋ 2.0๋ 1์ 2027์ผ์๋ง Apache XNUMX ๋ผ์ด์ ์ค๋ก ์ด์ ๋์ด์ผ ํฉ๋๋ค. ์ง๊ธ๊น์ง ๋ผ์ด์ ์ค๋ ์๋น์ค์ ์ ํ์ ์ด์์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก๋ง ์ฝ๋ ์ฌ์ฉ์ ํ์ฉํ์ง๋ง Dragonfly์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ญํ ์ ํ๋ ์ ๋ฃ ํด๋ผ์ฐ๋ ์๋น์ค ์์ฑ์๋ ์ฌ์ฉ์ ๊ธ์งํฉ๋๋ค.
๊ฐ๋ฐ์์ ์์ฐ๋ ํ ์คํธ์ ๋ฐ๋ฅด๋ฉด Dragonfly๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์์คํ ์ด๋ผ๊ณ ์ฃผ์ฅํฉ๋๋ค. Redis์ ๋นํด Dragonfly๋ ์ผ๋ฐ ์ํฌ๋ก๋์์ ์ฑ๋ฅ์ด 25๋ฐฐ ํฅ์๋๊ณ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ 2๋ฐฐ ๊ฐ์ํ์ต๋๋ค. Dragonfly ์๋ฒ ํ ๋๋ ์ด๋น ์๋ฐฑ๋ง ๊ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Amazon EC6 c16gn.3.8xlarge ํ๊ฒฝ์์๋ ์ด๋น XNUMX๋ง ๊ฐ์ ์์ฒญ ์ฑ๋ฅ์ ๋ฌ์ฑํ ์ ์์์ต๋๋ค.
5GB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ ์คํธ์์ Dragonfly๋ Redis๋ณด๋ค 30% ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์๋ก ํ์ต๋๋ค. "bgsave" ๋ช ๋ น์ผ๋ก ์ค๋ ์ท์ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์ฆ๊ฐํ์ง๋ง ํผํฌ ์๊ฐ์๋ Redis๋ณด๋ค ๊ฑฐ์ 30๋ฐฐ ์ ์ ์์ผ๋ก ์ ์ง๋๋ฉฐ ์ค๋ ์ท ๊ธฐ๋ก ์์ ์์ฒด๋ ํจ์ฌ ๋น ๋ฆ ๋๋ค(ํ ์คํธ์์ Dragonfly์ ์ค๋ ์ท์ 42์ผ๋ก ์์ฑ๋์์ต๋๋ค). ์ด, Redis - XNUMX์ด).
๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ์ง ์๋(๋น๊ณต์ ) ๋ฉํฐ ์ค๋ ๋ ์ํคํ ์ฒ ๋๋ถ์ ๊ณ ์ฑ๋ฅ์ด ๋ฌ์ฑ๋ฉ๋๋ค. ์ฆ, ๊ฐ ์ค๋ ๋์๋ ์์ฒด ๋ฐ์ดํฐ ๋ถ๋ถ์ด ํฌํจ๋ ๋ณ๋์ ๋ณ๋ ํ๋ก์ธ์๊ฐ ํ ๋น๋์ด ๋ฎคํ ์ค ๋ฐ ์คํ ์ ๊ธ ์์ด ์๋ํฉ๋๋ค. ์ฌ๋ฌ ํค๋ก ์์ ํ ๋ ์์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฒฝ๋ VLL ์ ๊ธ์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์ผ์ข ์ ๋ถํ ๋ ํด์ ํ ์ด๋ธ์ ๊ตฌํํ ๋์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ ์ค์๋ RESP2 ํ๋กํ ์ฝ ๋ฐ 130๊ฐ์ Redis ๋ช ๋ น์ ๋ํ ์ง์์ด ์ธ๊ธ๋์ด ์์ผ๋ฉฐ ์ด๋ ๋๋ต Redis 2.8 ๋ฆด๋ฆฌ์ค์ ๊ธฐ๋ฅ๊ณผ ์ผ์นํฉ๋๋ค. ๋ํ Dragonfly๋ CAS(check-and-set)๋ฅผ ์ ์ธํ ๋ชจ๋ memcached ๋ช ๋ น์ ์ง์ํ๊ณ , ์ค๋ ์ท ์์ฑ์ ์ํ ๋น๋๊ธฐ ์์ ์ ์ง์ํ๋ฉฐ, ์์ธก ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ์ ๊ณตํ๊ณ , Lua 5.4 ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ, ํด์์ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํฉ๋๋ค. ์ธํธ ๋ฐ ๋ชฉ๋ก(ZSET, HSET, LIST, SETS ๋ฐ STRING).
์ฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ ํ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํฐ๋ก ์๋ ๊ต์ฒดํ๋ ์บ์ฑ ๋ชจ๋๋ฅผ ๋ณ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ๊ด๋ จ์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ ๋์ ๋ฐ์ดํฐ์ ์๋ช
์ ์ฒจ๋ถํ ์ ์์ต๋๋ค. ๋ค์ ์์ํ ํ ๋์ค์ ๋ณต๊ตฌํ๊ธฐ ์ํด ์คํ ๋ฆฌ์ง ์ํ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์คํฌ๋ก ํ๋ฌ์ํ ์ ์์ต๋๋ค. ์์คํ
์ ๊ด๋ฆฌํ๊ธฐ ์ํด HTTP ์ฝ์(TCP ํฌํธ 6379์ ๋ฐ์ธ๋ฉ)๊ณผ Prometheus์ ํธํ๋๋ ๋ฉํธ๋ฆญ ๋ฐํ์ฉ API๊ฐ ์ ๊ณต๋ฉ๋๋ค. ํฅํ ๋ฒ์ ์์๋ Redis ๋ช
๋ น์ ๋ํ ์ง์์ ํ์ฅํ๊ณ ์คํ ๋ฆฌ์ง ๋ณต์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ฌ ๋ด๊ฒฐํจ์ฑ๊ณผ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ๊ณตํ ๊ณํ์
๋๋ค.
์ถ์ฒ : opennet.ru