Издаване на Dragonfly 1.0, система за кеширане на данни в оперативната памет

Представяме ви новата система за кеширане и съхранение на данни в оперативната памет Dragonfly, която манипулира данни в формат ключ/стойност и може да се използва като леко решение за ускоряване на работата на високо натоварени сайтове, кеширайки бавни запитвания към СУБД и междинни данни в оперативната памет. Dragonfly поддържа протоколите Memcached и Redis, което позволява да се използват вече съществуващи клиентски библиотеки и без преработка на кода да се мигрират проекти, използващи Memcached и Redis, към Dragonfly.

В сравнение с Redis, Dragonfly постигна 25-кратно увеличение на производителността при стандартни натоварвания в среда Amazon EC2 c6gn.16xlarge (3.8 млн. запитвания в секунда). В сравнение с Memcached в AWS среда c6gn.16xlarge, Dragonfly успя да извърши 4.7 пъти повече записвания в секунда (3.8 млн. спрямо 806 хиляди) и 1.77 пъти повече четения в секунда (3.7 млн. спрямо 2.1 млн.).

Издаване на Dragonfly 1.0, система за кеширане на данни в оперативната памет

В тестовете за съхранение на 5 ГБ данни, Dragonfly изисква 30% по-малко памет в сравнение с Redis. По време на създаването на моментни снимки с командата „bgsave“ потреблението на памет se увеличава, но в пиковите моменти остава почти три пъти по-ниско от това на Redis, а самата операция по запис на моментна снимка се извършва значително по-бързо (в теста моментната снимка в Dragonfly беше записана за 30 секунди, а в Redis — за 42 секунди).

Издаване на Dragonfly 1.0, система за кеширане на данни в оперативната памет

Висока производителност се постига благодарение на многопоточната архитектура без споделяне на ресурси (shared-nothing), която предвижда, че за всеки поток се свързва отделен изолиран обработвач със собствена порция данни, работещ без мютекси и spin-блокировки. За осигуряване на атомарност при работа с множество ключове се използват леки блокировки VLL. За ефективно съхранение на информация в паметта се използва структурата dashtable, реализираща разновидност на секционирани хеш-таблици.

Някои възможности на Dragonfly:

  • Режим на кеширане, при който автоматично се осигурява изхвърляне на стари данни с нови след изчерпване на свободната памет.
  • Поддръжка на време на живот на данните, в рамките на което данните се считат за актуални.
  • Поддръжка на фоново записване на състоянието на хранилището на диск за последващо възстановяване след рестартиране.
  • Наличието на HTTP конзола (привързана към TCP порта 6379) за управление на системата и API за предоставяне на метрики, съвместимо с Prometheus.
  • Поддръжка на 185 команди Redis, което е приблизително равно на функционалността на версия Redis 5.
  • Поддръжка на всички команди Memcached, с изключение на CAS (check-and-set).
  • Поддръжка на асинхронни операции за създаване на моментни снимки.
  • Предсказуемо потребление на памет.
  • Вграден интерпретатор Lua 5.4.
  • Поддръжка на сложни типове данни, като хешове, множества, списъци (ZSET, HSET, LIST, SETS и STRING) и данни в формат JSON.
  • Поддръжка на репликация на хранилището за осигуряване на отказоустойчивост и балансиране на натоварването.

Кодът Dragonfly е написан на C/C++ и се разпространява под лиценза BSL (Business Source License). Лицензът BSL беше предложен от съоснователите на MySQL като алтернатива на модела Open Core. Същността на BSL е, че кодът с разширена функционалност е първоначално достъпен за модификации, но в продължение на известно време може да се използва безплатно само при спазване на допълнителни условия, за които е необходимо закупуването на търговска лицензия. Допълнителните лицензионни условия на проекта Dragonfly предписват прехвърлянето на кода под лицензия Apache 2.0 на 15 март 2028 година. До тогава лицензът позволява използването на кода само за осигуряване на работата на техните услуги и продукти, но забранява използването му за създаване на платени облачни услуги, които са надстройка над Dragonfly.

Версия Dragonfly 1.0 се отличава с реализиране на поддръжка на репликация на данни от първичен сървър към вторичен. При това Dragonfly може да бъде настроен за използване като вторично хранилище, получаващо данни от първичен сървър както на базата на Dragonfly, така и на базата на Redis. API-то за управление на репликацията е съвместимо с Redis и се основава на използването на командите ROLE и REPLICAOF (SLAVEOF).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster