The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

31.05.2022 11:36

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

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Выпуск СУБД Redis 7.0
  3. OpenNews: Создатель СУБД Redis передал сопровождение проекта сообществу
  4. OpenNews: Компания Redis Labs перевела модули с Commons Clause на собственную несвободную лицензию
  5. OpenNews: Выпуск rqlite 7.0, распределённой отказоустойчивой СУБД на основе SQLite
  6. OpenNews: Релиз Memcached 1.6.0 с включением поддержки внешнего хранилища
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/57279-dragonflydb
Ключевые слова: dragonflydb, dragonfly, memcached, redis
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (68) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 12:44, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    > Система манипулирует данными в формате ключ/значение

    Map map = new HashMap();

    не благодарите

     
     
  • 2.3, sebe.online (?), 12:57, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это Java?
     
  • 2.9, Аноним (9), 13:18, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    map = {}
     
  • 2.13, Аноним (13), 13:48, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Map map = new HashMap();

    И как организовать к этому доступ с нескольких разных серверов?

     
     
  • 3.21, Аноним (2), 14:41, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –14 +/
    попробуй KISS. Если не поможет, тогда YAGNI.
     
     
  • 4.29, Аноним (29), 16:11, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +19 +/
    Знанием buzzwords будете хвастаться в отделе маркетинга, это этажом ниже.
     
     
  • 5.33, Аноним (2), 16:22, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    не могу, там сейчас совещание: маркетологи обсуждают "докеры", "инстансы" и прочие "более быстрые замены для редис", к которым планируют эффективно соединяться "с нескольких разных серверов" (причем требуют, чтобы как минимум один сервер был афроамериканцем)
     
     
  • 6.37, Аноним (29), 17:05, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это были разработчики. Не вникайте в их сленг, это технари, их сложно понять.
     
     
  • 7.39, Аноним (2), 18:02, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > это технари, их сложно понять

    ну кому как конечно, лично я на этом сленге даже думаю. Но к тебе это однажды тоже придет, и тогда технарей понимать будет не так уж и сложно

     
  • 5.66, Bbbbbbbbb (?), 16:36, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кубернетес
     

  • 1.4, Аноним (4), 13:00, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >кроме CAS (check and set)

    всю жись это было compare-and-swap

     
     
  • 2.7, Аноним (7), 13:12, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Во внутренних тестах называют  check-and-set:
    https://github.com/memcached/memcached/blob/c472369fed5981ba8c004d426cee62d516
    https://github.com/memcached/memcached/blob/894e4c16b5162e25ce649cf8a57dfad250

    В документации основное название "Check And Set", но как альтернативная трактовка упоминается и Compare And Swap - https://github.com/memcached/memcached/wiki/Commands#cas

     
  • 2.44, Онаним (?), 20:27, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще не надо ничего придумывать, есть старый добрый CMPXCHG, который лучше всяких CAS'ов, которые можно попутать.
     
     
  • 3.45, Судья из Калифорнии с опытом программирования (?), 20:49, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Как насчёт LL/SC?
     

  • 1.5, lockywolf (ok), 13:02, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Чего это BSD-шники взялись за базы данных?
     
     
  • 2.36, Аноним (36), 16:55, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Это не про DragonFlyBSD
     
  • 2.65, Shevchuk (ok), 15:59, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Чем только ни займутся, лишь бы KDE не патчить.
     

  • 1.6, Аноним (6), 13:09, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Но, тот же redis, это, ведь, не memcached. А вообще, там, например, есть "блокировки", что, в случае, если данные изменились между началом и завершением транзакции, достаточно эффективно поможет избежать гонки -- повторит транзакцию и возьмёт новые данные. Можно использовать для синхронизации IPC. И он даже не совсем чтобы система хранения _в памяти_. Странные они какие-то.
     
  • 1.8, Robin Hood (?), 13:17, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Я уж обрадовался, что речь пойдет о DragonFly BSD (лучший линекс для 4 пня).
     
     
  • 2.60, Аноним (60), 08:23, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > лучший линекс

    "Форте" или простой? Очепятка или сознательно, типа, нормализация "микрофлоры кишечника" 4-го пня? Пень со СтрекозойБСД будет без запоров/диарей/метеоризма?

     

  • 1.10, Аноним (10), 13:18, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Весь код это сплошное "using namespace std;"... Зато сразу в коммерцию пошли, ну-ну.
     
     
  • 2.19, Аноним (19), 14:01, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Там нет коммэрции, дружище. (Не настолько ж они идиоты чтоб всерьез ждать завтра под дверью амазона с пейсбуком с мешками денег. ТАК слон не продается никогда.) Там просто желание нагадить ближнему.

    Опыт редисов ничему не научил.

     
     
  • 3.32, Аноним (29), 16:20, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Там просто желание нагадить ближнему.

    Там просто желание не дать ближнему нагадить себе.
    Для простых админов, использующих БД на своей инфраструктуре - лицензия куда более выгодная, чем open core, потому что даёт все фичи и сразу. А предоставлением облачных сервисов занимаются только fatcats типа амазона и гугла, которые не обеднеют от покупки лицензии.

     
     
  • 4.47, пох. (?), 21:57, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ну конечно, у горе-изобретателя ведь где-то сзади пригорает если его изобретение... большой текст свёрнут, показать
     
     
  • 5.48, Аноним (13), 22:11, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Поскольку амазоны с гуглами иногда, удивительно но факт, умудряются что-то улучшать в сво6одкином софте.

    И история знает хоть один такой случай?

     
  • 2.24, Аноним (24), 14:57, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не в хедерах и ладно.
     
  • 2.55, Аноним (55), 22:44, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ведь код это сишка, достаточно
     
     
  • 3.70, Аноним (70), 19:24, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Плюс плюс-ы же ...
     

  • 1.12, Catwoolfii (ok), 13:34, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Интересно сравнение сабжа с KeyDB, а не с ванильным Redis
     
     
  • 2.14, Аноним (13), 13:50, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А если на графики посмотреть? Наличие колонок, подписанных "KeyDB", не смущает?
     
     
  • 3.25, Catwoolfii (ok), 15:04, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Эти графики ангажированные, imho
     
     
  • 4.26, Igor (??), 15:46, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Тем не менее сравнение с keydb есть! Не нравится "ангажированное" - проведи свое и опубликуй.
     
  • 4.31, Аноним (29), 16:16, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Эти графики ангажированные, imho

    Если вы сморозили фигню, добавление "imho" никак не отменяет этого факта.

     

  • 1.15, Аноним (13), 13:51, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ждём нормальной поддержки отказоустойчивых кластеров, и можно в прод.
     
     
  • 2.18, Аноним (19), 14:00, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Лет десять еще подождите, ага. А потом - в рай!
     

  • 1.16, Аноним (19), 13:56, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    CAS не поддерживается? Ну и какая ж это замена memcache?

    Видимо суперускорение - за счет неработающих толком блокировок.
    Иначе совершенно неясно, что помешало тривиальный (для мемкэша) CAS сделать.

    Ну и "redis 2.8" - кто вообще его помнит еще и что там тогда было толком неработающим (дайте угадаю - все те же блокировки)

     
  • 1.17, Аноним (19), 13:59, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    И да, в новости забыли упомянуть что он завязан на какое-то там ио-урина-апи существующее только в л@п4тых ведрах вчерашнего и позавчерашнего разлива. Т.е. это не *nix софт, и даже не posix.

    Выкрасить и выбросить.

     
     
  • 2.30, Аноним (29), 16:13, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А кому нынче нужен софт под альтернативно одарённые платформы?
    Банкам, у которых кобол под соляркой крутится? Так они и без современных БД обойдутся, всё равно код адаптировать под них некому.
     
     
  • 3.46, пох. (?), 21:50, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > А кому нынче нужен софт под альтернативно одарённые платформы?

    ну вот поэтому этот ваш драгоншит никому и не нужен.

     
     
  • 4.49, Аноним (13), 22:13, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сабж, возможно, кому-то и понадобится.

    А вот всякие солярки и чпуксы остались только там, где нормальный человек с*ать не сядет.

     
  • 2.73, edo (ok), 04:19, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ИМХО io_uring — это одно из лучшего, что появилось в юниксах за последние годы.
    и да, ожидаю, что в живых юниксах вроде freebsd оно скоро появится или в совместимом виде, или в «творчески переосмысленном».
     

  • 1.20, Аноним (20), 14:09, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    BSL: будет путаница с Boost Software License https://www.boost.org/users/license.html
     
     
  • 2.51, Аноним (13), 22:15, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Подозреваю, что большинство одарённых будет путать даже с BSDL, и лишняя буква их не смутит.
     

  • 1.22, ананоша (?), 14:55, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Для асинхронщины требует uring, соответственно работает только на свежем ядре
     
     
  • 2.23, ананоша (?), 14:56, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Комментарии не читай, сразу пеши.
     
  • 2.71, Анонимленьлогиниться (?), 20:29, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    uring есть в текущих стабильных EL, и в чем проблема?
     

  • 1.34, Тот Самый (?), 16:33, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >По сравнению с Redis в Dragonfly при типовых видах нагрузки удалось добиться 25-кратного увеличения производительности

    Бред какой-то! Так не бывает!

    1) Redis точно работал в режиме memory only, без синхронизации на диск? А то, по-дефолту у Redis:
    #   Save the DB on disk:
    after 900 sec (15 min) if at least 1 key changed
    after 300 sec (5 min) if at least 10 keys changed
    after 60 sec if at least 10000 keys changed

    2) "типовые виды нагрузки" - это конкретно что? GET, SET чего? А то, например, при записи ассоциативных массивов Redis одновременно делает сортировку индексов (Dragonfly так не умеет)

    3) ни где не указано (и в первоисточнике то-же) с какой версией Redis тестировали. Dragonfly по функциональности пока на уровне Redis 2.8, а текущий Redis 7.0 основательно пожирнел.

    >трёхкратного снижения потребления памяти

    Вау! Но ни где не сказано с каким memory allocator был собран Redis. Его можно собрать с malloc=libc, jemalloc, tcmalloc. В этих случаях разница в использовании памяти будет кардинально отличаться.

    Все это смахивает на дешевую PR акцию.

     
     
  • 2.54, Аноним (13), 22:22, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Его можно собрать с malloc=libc, jemalloc, tcmalloc.

    А разве кто-то в здравом уме будет использовать не glibc'шный аллокатор?
    Что мюслевский, что jemalloc - просто проблемы с производительностью на ровном месте.

     
     
  • 3.57, Тот Самый (?), 00:41, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >А разве кто-то в здравом уме будет использовать не glibc'шный аллокатор?

    Например TOR (не браузер, а ноды и клиенты) используют jemalloc
    >проблемы с производительностью

    Это не "проблемы", а плата за дефрагментированную память (ни чего действительно полезного забесплатно не бывает)

     
  • 2.61, funny.falcon (?), 08:34, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то, если не пытаться быть самым умным при сборке, то Redis вкомпиливает в себя патченный jemalloc. Его можно попросить этого не делать, но по умолчанию он это делать.
     

  • 1.35, bOOster (ok), 16:49, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если разговор идет о 5 гигабайтах - ребятки заново ZFS изобретают?
     
  • 1.40, Онаним (?), 18:16, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    BullShitLicense? Не нужно (C)
     
     
  • 2.53, Аноним (13), 22:19, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Но ведь фраза "не нужно" (как, например, слова и аббревиатуры "KISS", "overbloat", "комбайн", "смузихлёб" и др.) тоже распространяется под bullshit license, так что эта лицензия всё-таки нужна!
     
     
  • 3.56, Онаним (?), 23:05, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Фраза "не нужно" - не распространяется. Она прикладывается. Как тот подорожник.
     

  • 1.41, Аноним (41), 18:27, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > запрещает применение для создания платных облачных сервисов, выступающих надстройкой над Dragonfly

    Дальше можно не читать.

     
     
  • 2.42, Аноним (29), 18:28, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Мистер Безос?
     
     
  • 3.74, Аноним (74), 17:10, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не люблю делать лишнюю работу Редис мемкеш как сервис в том или ином виде есть ... большой текст свёрнут, показать
     
  • 2.58, Аноним (58), 03:40, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как авторам узнать, что лицензия нарушена, если это используют в коммерческих целях? Если  это PaaS/SaaS, то это ещё знать надо, из чего конкретно состоит бэкенд. Разве что там телеметрия какая зашита,палящая ip и хостнеймы
     
     
  • 3.62, funny.falcon (?), 08:38, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Имеется виду, запрещается такое: «только у нас managed DragonflyDB», «наш AnrgryBirdDB такой же, как DragonflyDB, только допиленный и настроенный. Всего $1 за миллиард запросов».
     

  • 1.50, IvAnZ (?), 22:14, 31/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    судя по тестам (все на Graviton), её под ARM64 затачивали.
     
     
  • 2.52, Аноним (13), 22:16, 31/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее под многопоток. На чём ещё можно взять столько ядер задёшево?
     
     
  • 3.63, funny.falcon (?), 08:43, 01/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Тесты погонять и на x86 не так уж дорого. Если сравнивать по vCPU, то всего на 30% дороже гравитон. Даже на большом AWS инстансе можно себе час позволить.
     

  • 1.59, Иваня (?), 07:37, 01/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Наконец-то заменят старьё (Redis и Memcached). Спасибо. Надо ознакомиться с проектом.
     
  • 1.64, InuYasha (??), 13:03, 01/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Офигенно. Коданы ваще ребята. Бысто, чётко, малацы.
    И приз "золотой вантус" за херовую инфографику. Не, ну серьезно - можно было без этих лшбт-полосок сделать даже монохромный рисунок понятней.
     
  • 1.67, Аноним (-), 17:41, 01/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что за лицензия такая левая?
     
     
  • 2.72, Аноним (72), 03:00, 02/06/2022 [^] [^^] [^^^] [ответить]  
  • +/
    какая тебе, с твоим локалхостом, разница
     

  • 1.75, Roman (??), 13:53, 05/06/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мне, как автору проекта было очень смешно читать ваши комментарии.
    Это как если бы бабки в колхозе Анджелу Маркель обсуждали.
    всем есть шо сказать. семечков есть пощелкать?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру