Dragonfly е хранилище за данни в паметта, създадено за съвременни работни натоварвания на приложения.
Преди няколко дни беше обявено издаване на системата за кеширане в паметта и съхранение на данни Dragonfly, който манипулира данни във формат ключ/стойност и може да се използва като леко решение за ускоряване на сайтове с високо натоварване чрез кеширане на бавни заявки към СУБД и междинни данни в RAM.
водно конче поддържа протоколи Memcached и Redis, което ви позволява да използвате съществуващи клиентски библиотеки и проекти за портове, като използвате Memcached и Redis към Dragonfly, без да се налага да преработвате кода си.
Заслужава да се спомене, че Dragonfly наскоро получи актуализация, достигайки своята версия 1.0 и в която се отличава с внедряването на поддръжка за репликация на данни от първичен към вторичен сървър.
В същото време Dragonfly може да се конфигурира да се използва като вторично хранилище който приема данни от главния сървър, базиран на Dragonfly и Redis. API за управление на репликация е съвместим с Redis и се основава на използването на командите ROLE и REPLICAOF (SLAVEOF).
Относно Dragonfly
Висока производителност се постига благодарение на многонишкова архитектура без споделяне на ресурси (споделено-нищо), което означава, че отделен контролер е прикрепен към всяка нишка със собствена част от данните, която работи без mutexes или spin-locks.
Използват се олекотени VLL ключалки, за да се гарантира атомарност при работа с множество ключове, тъй като за ефективно съхраняване на информацията в паметта се използва структурата на dashtable, която прилага един вид разделени хеш-таблици.
В сравнение с Redis, Dragonfly може да се похвали с 25-кратно увеличение на производителността (3,8 милиона заявки в секунда) при типични работни натоварвания в среда на Amazon EC2 c6gn.16xlarge. В сравнение с Memcached в AWS c6gn.16xlarge среда, Dragonfly успя да изпълни 4,7 пъти повече заявки за запис в секунда (3,8 милиона срещу 806k) и 1,77 пъти повече заявки за четене в секунда (3,7 милиона срещу 2,1 милиона).
При тестове за съхранение от 5 GB, Dragonfly изискваше 30% по-малко памет от Redis. По време на създаване на моментна снимка с помощта на командата "bgsave" потреблението на памет се увеличава, но в пиковите моменти се запазва почти три пъти по-малко, отколкото в Redis, а самата операция по запис на моментна снимка е много по-бърза (в случая на Redis). test, a снимката е написана на Dragonfly за 30 секунди, а на Redis – за 42 секунди).
Малко Характеристиките на Dragonfly са:
- Режим на кеширане, който автоматично заменя старите данни с нови след изчерпване на свободната памет.
- Поддръжка за жизнени цикли на обвързване на данни, през които данните се считат за актуални.
- Поддръжка за изчистване на състоянието на съхранението на диск във фонов режим за по-късно възстановяване след рестартиране.
- Наличието на HTTP конзола (свързва се към TCP порт 6379) за управление на системата и API за връщане на метрики, съвместими с Prometheus.
- Поддръжка за 185 Redis команди, приблизително еквивалентни на функционалността на версията Redis 5.
- Поддръжка за всички команди Memcached с изключение на CAS (проверете и конфигурирайте).
- Поддръжка на асинхронни операции за създаване на моментни снимки.
- Предсказуема консумация на памет.
- Интегриран Lua интерпретатор 5.4.
- Поддръжка за сложни типове данни като хешове, набори, списъци (ZSET, HSET, LIST, SETS и STRING) и JSON данни.
- Поддръжка на репликация на хранилище за преход при срив и балансиране на натоварването.
За тези, които се интересуват от кода на Dragonfly, трябва да знаете, че това е написан на C/C++ и се разпространява под лиценза BSL .Същността на BSL е, че кодът с разширена функционалност първоначално е достъпен за модификация, но известно време може да се използва безплатно само при допълнителни условия, които изискват закупуване на търговски лиценз за заобикаляне.
Допълнителните лицензионни условия на проекта Dragonfly изискват кодът да бъде мигриран към Apache License 2.0 на 15 март 2028 г. Дотогава лицензът позволява използването на кода само за осигуряване на работата на неговите услуги и продукти, но забранява използването за създаване на платени облачни услуги, които действат като плъгин към Dragonfly.
Накрая ако се интересувате да научите малко повече за това, можете да проверите подробностите в следваща връзка.