The OpenNET Project / Index page

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

Выпуск Dragonfly 1.0, системы для кэширования данных в оперативной памяти

20.03.2023 21:26

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

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

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

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

  1. Главная ссылка к новости (https://github.com/dragonflydb...)
  2. OpenNews: Релиз операционной системы DragonFly BSD 6.4
  3. OpenNews: Проект Dragonfly развивает более быструю замену Redis и Memcached
  4. OpenNews: Уязвимость в СУБД Redis, потенциально позволяющая выполнить свой код
  5. OpenNews: Выпуск СУБД Redis 7.0
  6. OpenNews: Релиз Memcached 1.6.0 с включением поддержки внешнего хранилища
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58830-dragonfly
Ключевые слова: dragonfly, redis, memcached
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 21:48, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Странно, что назвали не Debian.
     
  • 1.3, Аноним (3), 21:49, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Вот.. оперативка нужна не только для Веб Хромого: есть куда более значимые ПО
     
  • 1.4, Аноним (4), 21:57, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    Я уже подумал что вышла новая DragonFly BSD
     
     
  • 2.6, VoiD (?), 22:03, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что там с хаммером у них, доделали уже? BSD остро нуждаются в современной файловой системе и нормальном гибридном ядре. Стрекоза решает этот вопрос, но ооочень медленно дела у них идут.
     
     
  • 3.11, Аноним (11), 22:14, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Все давно ждут когда ты ужо подключишься к проекту и сделаешь всё красиво. И вдруг, оказывается, что ты сам главный ждун.
     
     
  • 4.17, VoiD (?), 23:00, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет проблем. Думаю, $2000 в месяц помогли бы мне найти мотивацию.
     
     
  • 5.21, Аноним (21), 23:24, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что такой низкий уровень мотивации и самооценки? Например, чтобы отодрать свою филейную часть от дивана и пойти мыть полы бюргеру требуется минимум 12 евро в час (2200 на полную ставку в 40 часов в неделю).  
     
     
  • 6.38, Бывалый Смузихлёб (??), 09:42, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну так он то разработкой будет заниматься а не полы мыть. Профессионально расти, опять же
     
  • 5.43, Анимус (?), 10:22, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Гитхаб свой поккажешь? А то иксперты опеннетика такие: "Платите мне много денех, я вам всё что угодно напишу!". Нет, это так не работает. Сначала ты доказываешь, что сможешь хоть что-то посложнее хэлоуворлда написать, а потом можно уже будет и о деньгах поговорить.
     
  • 5.45, Аноним (45), 11:40, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У вас рука дрогнула и два лишних нуля приписалось
     
  • 3.22, Аноним (22), 23:44, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ещё один с гибридным ведром. Оно там давно не гибридной. Почитай их рассылку. Это самый обычный традиционный юникс.
     
  • 3.55, mc_taurus (ok), 16:11, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Во FreeBSD с незапамятных времён ZFS есть. Или и это вам не современно?
     

  • 1.7, ma3x one (?), 22:06, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я тоже подумал про DragonFly BSD, меня просто смутила версия 1.0
     
  • 1.8, Анонус (?), 22:10, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А сравнения с Tarantool все нет и нет.
     
     
  • 2.9, Аноним (9), 22:11, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Паук мощнее
     
     
  • 3.16, VoiD (?), 22:55, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Например
     
  • 2.12, Аноним (12), 22:17, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Redis делал один человек, в отличие от целой рати болванчиков.
     
  • 2.31, YetAnotherOnanym (ok), 07:33, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сравнил садовую тачку с грузовиком.
     
  • 2.48, лютый ж.... (?), 12:05, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >А сравнения с Tarantool все нет и нет.

    весь этот фуфел, который через сетевой стек гоняет данные не нужен. с hazelcast бы сравнили скорость, который эмбеднут в твое приложение

     

  • 1.15, Аноним (15), 22:40, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –14 +/
    >Код Dragonfly написан на языках C/С++

    Опять легаси.

     
     
  • 2.18, Вуся (?), 23:09, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • –7 +/
    +1, как будто писать больше не на чем. С++ вообще один из худших языков.
     
     
  • 3.19, Кир (?), 23:12, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну не на хрусте же писать серьезные штуки. Сабж должен работать, а не изображать процесс.
     
     
  • 4.67, Вуся (?), 19:55, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Rust.
     
  • 3.69, Neon (??), 21:13, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько прекрасных языков, а писать не на чем.))) Парадокс ?))) Или может быть языки не настолько прекрасны ?
     
     
  • 4.72, Мегалодон (?), 01:32, 31/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Сколько прекрасных языков, а писать не на чем.))) Парадокс ?))) Или может
    > быть языки не настолько прекрасны ?

    Раст попробуй и не парься.

     
  • 2.30, trdm (ok), 07:28, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Надежный, проверенный временем, мощный.
     
     
  • 3.42, Аноним (42), 10:15, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    звучит как реклама страпона
     
     
  • 4.46, Аноним (46), 11:49, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Реклама страпона это про Rust.
     
     
  • 5.47, Массоны Рептилоиды (?), 11:57, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Безопасный страпон? Да кому он такой нужен
     

  • 1.20, Аноним (20), 23:23, 20/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Что-то они и сами запутались в своих бенчмарках:
    > (в тесте снапшот в Dragonfly был записан за 30 секунд, а Redis - за 42 секунды).

    при этом на сайте написано, что
    > Snapshotting speed
    > Dragonfly 1260MB/s
    > Redis 107MB/s

    (я уже даже стесняюсь спросить что это за цифры такие, они редис на десктопный хдд ставили, чтоб сравнить?)

     
     
  • 2.23, Аноним (23), 23:56, 20/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Dragonfly заснапшотил себя и заодно Redis) На таких скоростях единственная проблема - это вовремя остановиться)
     
  • 2.62, Tron is Whistling (?), 10:42, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по соотношению, просто 0 лишний.
     

  • 1.25, Аноним (21), 01:23, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > c6gn.16xlarge

    Судя по описанию, 64 ядра и 128 гб памяти. ARM, что любопытно, на рисунке несколько поколений r6g - c7g - c6g. Для местной аудитории было бы релевантно сравнение с одной широко известной в узких кругах отечественной архитектурой.

    Также интересно что накопитель на инстанс всего 1-2 nvme ssd. Поэтому цифры в районе "сдампить порядка 5 гб памяти за 30 секунд" (1.3 гбайт/с, как указано выше по треду) звучит скорее как упирание в скорость записи накопителя. Неудивительно, что redis занимавший физически на 30% больше памяти сбрасывался на те же 30% времени больше.

     
  • 1.32, YetAnotherOnanym (ok), 07:57, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все эти "БД в памяти" хороши только в теории и только для ограниченного круга задач. А когда малолетние энтузиасты начинают "хоронить SQL" - вот это бывает забавно наблюдать.
     
     
  • 2.36, Stax (ok), 09:32, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зато там, где они хороши - они очень хороши...

    А причем тут SQL вообще, когда это про ключ-значение?

     
     
  • 3.65, ivan_erohin (?), 08:07, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > это про ключ-значение?

    при нормализации реляционной БД она вырождается в набор таблиц с двумя полями "ключ, значение".

     
  • 2.40, Ан (??), 09:49, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хоронили SQL где-то в прошлом десятилетии, уже давно перестали.
     
     
  • 3.64, YetAnotherOnanym (ok), 11:26, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Адекватные и тогда не особо его хоронили. А неадекваты и сейчас есть, постоянно прибегают в новости про постгрес или мускул/машку: "у меня монга/редис, а ваш скуль не нужен".
     
  • 3.70, Neon (??), 21:14, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Аж все баяны порвали.)))
     
  • 2.59, Котофалк (?), 22:39, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хороши на практике в тех задачах, под которые создавались. "Ключ-значение" в подавляющем большинстве даже не пытаются имитировать SQL и уж темболее хоронить.
     
     
  • 3.63, YetAnotherOnanym (ok), 11:13, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Так то у адекватных, у которых SQL, ключ-значение, документ-ориентированные, графовые, ширококолонные и какие там  ещё есть БД - каждая для своих задач. А я про малолетних энтузиастов писал.
     

  • 1.37, Аноним (37), 09:41, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    К 1С можно прикрутить? А то памяти в несколько раз больше чем сама база, а она всё равно тупит.
     
     
  • 2.44, Монгол (?), 10:32, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Засунь базу в память и будет тебе счастье.
     
     
  • 3.50, Аноним (50), 12:18, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Когда выключат свет будет много счастья. Это да. И главный бухгалтер ещё для большего счастья даст по башке.  
     
     
  • 4.54, bw (ok), 15:15, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Купите ИБП на сдачу от оперативки, что ли.
     
  • 2.57, пгуыыцрщ (?), 20:41, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    tempdb в рамдиски, и самые большие таблицы разложить на раздельные диски (не разделы)
     
  • 2.66, ivan_erohin (?), 08:10, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    база файловая (не MS SQL, не Posgres) и 3+ активных пользователя ?
    так и должно быть.
     

  • 1.39, Аноним (37), 09:47, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    "Поддержка всех команд Memcached, кроме CAS (check-and-set)"

    Очень показательно, что не смогли реализовать команду, требующую блокировок.
    И резко всё стало быстрее.

     
     
  • 2.51, Аноним (50), 12:19, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Может это заговор блокировщиков?
     

  • 1.49, Аноним (49), 12:09, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оооот она! Ооот она рыба мой мечты! ̶Я̶а̶а̶а̶ааа̶з̶ь̶! Указатели и ссылки на крестах! Грамотное приготовление плюсов! Использовали бы еще закрытый интол-компилятор для лучшей работы с памятью, тогда б ащеее улееет.
     
  • 1.53, Аноним (53), 14:20, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Смотрю их гитхаб - есть только docker версия, собрать можно из сырцов но все равно будет работать только по tcp/ip, а хотелось бы unix socket чтоб хоть и незначительно, но увеличить производительность.
     
     
  • 2.56, Аноним (56), 19:21, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >а хотелось бы unix socket чтоб хоть и незначительно, но увеличить производительность

    Судя по их гитхабу, разработчики очередные смузихлебы. Типа есть билд под докер и на остальное наплевать. Другие платформы? Не, не слышали.

    А на поддержку unix socket они положили болт, так как даже не понимают зачем оно нужно: https://github.com/dragonflydb/dragonfly/discussions/168

     
  • 2.60, Прыгающий Ленивец (?), 01:16, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А смысл? Если нужно хранение в локальной памяти, просто используйте в своем приложении подходящую реализацию хэш таблиц. Подобные вещи используют для распределенного хранения когда данные в один сервак не влезают или по объему или по перфомансу
     

  • 1.58, Аноним (58), 22:22, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А слабо им сравнить с LMDB или libmdbx?
     
  • 1.61, bOOster (ok), 08:15, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Смотрю и поражаюсь, как много изобретателей колеса квадратного.
    ZFS все это решает абсолютно не напрягаясь.
     
     
  • 2.71, Neon (??), 21:14, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так за изобретенное уже круглое колесо грантики никто не даст А во за квадратное еще дают)))
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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