Лоиҳаи 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 таҳия мекунад

Маҳсулнокии баланд ба шарофати меъмории бисёрсоҳавӣ бидуни мубодилаи захираҳо ба даст оварда мешавад (мубодила-ҳеҷ чиз), ки маънои онро дорад, ки коркарди алоҳида бо қисми худ аз маълумот ба ҳар як ришта замима карда мешавад, ки бе мутексҳо ва қуфлҳо кор мекунад. Қулфҳои сабуки VLL барои таъмини атомӣ ҳангоми кор бо калидҳои сершумор истифода мешаванд. Барои нигоҳдории самараноки иттилоот дар хотира сохтори ҷадвалбанди истифода мешавад, ки як навъ ҷадвалҳои ҳэшҳои тақсимшударо амалӣ мекунад.

Из возможностей, доступных в первом выпуске отмечается поддержка протокола 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

Илова Эзоҳ