RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ธ Dragonfly 1.0 ์ถœ์‹œ

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๋งŒ)์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ธ Dragonfly 1.0 ์ถœ์‹œ

5GB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ…Œ์ŠคํŠธ์—์„œ Dragonfly๋Š” Redis๋ณด๋‹ค 30% ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. "bgsave" ๋ช…๋ น์œผ๋กœ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ํ”ผํฌ ์ˆœ๊ฐ„์—๋Š” Redis๋ณด๋‹ค ๊ฑฐ์˜ 30๋ฐฐ๋‚˜ ์ ๊ฒŒ ์œ ์ง€๋˜์—ˆ์œผ๋ฉฐ ์Šค๋ƒ…์ƒท ๊ธฐ๋ก ์ž‘์—… ์ž์ฒด๋„ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ์—์„œ Dragonfly์˜ ์Šค๋ƒ…์ƒท์€ 42์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ์ดˆ, Redis - XNUMX์ดˆ).

RAM์— ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ธ Dragonfly 1.0 ์ถœ์‹œ

๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”(๋น„๊ณต์œ ) ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์— ๊ณ ์„ฑ๋Šฅ์ด ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ ์Šค๋ ˆ๋“œ์—๋Š” ์ž์ฒด ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์ด ํฌํ•จ๋œ ๋ณ„๋„์˜ ๋ณ„๋„ ํ”„๋กœ์„ธ์„œ๊ฐ€ ํ• ๋‹น๋˜์–ด ๋ฎคํ…์Šค ๋ฐ ์Šคํ•€ ์ž ๊ธˆ ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํ‚ค๋กœ ์ž‘์—…ํ•  ๋•Œ ์›์ž์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฝ๋Ÿ‰ 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€