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

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

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

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

В тестовете за съхранение на 5 ГБ данни Dragonfly изисква с 30% по-малко памет от Redis. По време на създаването на снимки с командата „bgsave“ потреблението на памет нараства, но в пикова точка остава почти три пъти по-ниско от това на 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