ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Dragonfly Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ Redis ΠΈ Memcached

ДоступСн ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск систСмы ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Dragonfly, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Memcached ΠΈ Redis, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы с Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ с мСньшим ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ памяти. БистСма ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ лСгковСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ высоконагруТСнных сайтов, ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ запросы ΠΊ Π‘Π£Π‘Π” ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Код Dragonfly написан Π½Π° языках C/Π‘++ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ BSL (Business Source License).

ЛицСнзия BSL Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° соосноватСлями MySQL Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ Open Core. Π‘ΡƒΡ‚ΡŒ BSL Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ доступСн для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ бСсплатно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ соблюдСнии Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условий, для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ условия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Dragonfly ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΊΠΎΠ΄Π° Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ Apache 2.0 лишь 1 июня 2027 Π³ΠΎΠ΄Π°. Π”ΠΎ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ лицСнзия Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ использованиС ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обСспСчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ своих сСрвисов ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², Π½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для создания ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов, Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… надстройкой Π½Π°Π΄ Dragonfly.

По заявлСнию Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ продСмонстрированным тСстам Dragonfly ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° Π·Π²Π°Π½ΠΈΠ΅ самой быстрой систСмы хранСния Π² памяти. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Redis Π² Dragonfly ΠΏΡ€ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π²ΠΈΠ΄Π°Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ 25-ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‚Ρ€Ρ‘Ρ…ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ сниТСния потрСблСния памяти. Один сСрвСр Dragonfly ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ запросов Π² сСкунду, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Amazon EC2 c6gn.16xlarge ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² 3.8 ΠΌΠ»Π½ запросов Π² сСкунду.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Dragonfly Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ Redis ΠΈ Memcached

Π’ тСстах Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ 5 Π“Π‘ Π΄Π°Π½Π½Ρ‹Ρ… Dragonfly ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π½Π° 30% мСньшС памяти, Ρ‡Π΅ΠΌ Redis. Π’ΠΎ врСмя создания ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «bgsave» ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти возрастаСт, Π½ΠΎ Π² ΠΏΠΈΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ½ΠΎ остаётся ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° мСньшС, Ρ‡Π΅ΠΌ Π² Redis, Π° сама опСрация записи ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π° выполняСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС (Π² тСстС ΡΠ½Π°ΠΏΡˆΠΎΡ‚ Π² Dragonfly Π±Ρ‹Π» записан Π·Π° 30 сСкунд, Π° Redis — Π·Π° 42 сСкунды).

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Dragonfly Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ Π·Π°ΠΌΠ΅Π½Ρƒ Redis ΠΈ Memcached

Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ достигаСтся благодаря ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Π±Π΅Π· раздСлСния рСсурсов (shared-nothing), ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ привязываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ обособлСнный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ со своСй ΠΏΠΎΡ€Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π±Π΅Π· ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠΎΠ² ΠΈ spin-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Для обСспСчСния атомарности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с нСсколькими ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ лСгковСсныС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ VLL. Для эффСктивного хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² памяти примСняСтся структура dashtable, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ сСкционированных Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†.

Из возмоТностСй, доступных Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ выпускС отмСчаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° RESP2 ΠΈ 130 ΠΊΠΎΠΌΠ°Π½Π΄ Redis, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ соотвСтствуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выпуска Redis 2.8. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Dragonfly ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ memcached, ΠΊΡ€ΠΎΠΌΠ΅ CAS (check-and-set), прСдоставляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ асинхронных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для создания ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ², обСспСчиваСт прСдсказуСмоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти, прСдоставляСт встроСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Lua 5.4 ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ слоТныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ…ΡΡˆΠΈ, мноТСства ΠΈ списки (ZSET, HSET, LIST, SETS ΠΈ STRING).

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ доступСн Ρ€Π΅ΠΆΠΈΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ автоматичСски обСспСчиваСтся вытСснСниС старых Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΎΠ²Ρ‹ΠΌΠΈ послС исчСрпания свободной памяти. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° привязка ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. БостояниС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° диск Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ восстановлСния послС пСрСзапуска. Для управлСния систСмой прСдоставляСтся HTTP-консоль (привязываСтся ΠΊ TCP-ΠΏΠΎΡ€Ρ‚Ρƒ 6379) ΠΈ API для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, совмСстимый с Prometheus. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях планируСтся Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ Redis ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° для обСспСчСния отказоустойчивости ΠΈ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ