LINUXTALKS.CO

Проект Dragonfly развивает более быструю замену Redis и Memcached

 


0

1

Доступен первый выпуск системы кэширования данных в оперативной памяти 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 млн запросов в секунду.

В тестах на хранение 5 ГБ данных Dragonfly потребовал на 30% меньше памяти, чем Redis. Во время создания снапшотов командой «bgsave» потребление памяти возрастает, но в пиковые моменты оно остаётся почти в три раза меньше, чем в Redis, а сама операция записи снапшота выполняется значительно быстрее (в тесте снапшот в Dragonfly был записан за 30 секунд, а Redis - за 42 секунды).

Высокая производительность достигается благодаря многопоточной архитектуре без разделения ресурсов (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 и реализовать возможность репликации хранилища для обеспечения отказоустойчивости и балансировки нагрузки.

>>> Подробности

★★★★★★★★★★★★

дописал тулзу для конвертации новостей с опеннета на python. было бы клева переписать на rust.

crypt    
★★★★★★★★★★★★
FreeBSD / Chrome
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90