Новий key-value стор, x25 перфоманса від Redis — Dragonfly

Dragonfly — нове сховище даних у пам’яті, повністю сумісне з API Redis та Memcached. Сховище реалізує сучасні алгоритми та структури даних поверх багатопоточної, shared-nothing архітектури.

Продуктивність

Dragonfly досягає продуктивності x25 порівняно з Redis і підтримує мільйони QPS в одному інстансі. Що робить його високопродуктивною та простою заміною де-факто стандарту Redis.

Памʼять

Згідно з бенчмарками Dragonfly був на 30% ефективнішим в режимі очікування, ніж Redis. Під час снепшоту також не було збільшення використання памʼяті. Тим часом Redis на піку досяг майже 3-кратного збільшення пам’яті порівняно з Dragonfly.

Більш детально: github.com/...​lob/main/doc/dashtable.md

Стан проекту

Автори почали проект як експеримент, щоб подивитись як має виглядати ін-меморі сховище, яке дизайнять в 2022.

Наразі Dragonfly підтримує ~130 команд Redis і всі команди memcache, окрім cas. Першим майлстоуном проекту є стабілізація базової функціональності та повна рівніть API з Redis 2.8 та Memcached.

За тиждень на github проекту вже майже 7 тисяч зірочок.

Про цей проект я розказував в подкасті «Потестим в проді».

Телеграм канал: t.me/test_in_prod

youtube, apple podcasts, google podcasts

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Раніше писав статтю Збільшення швидкодії Redis-у через розділення на домени, й легко вдалось підключити Dragonfly й додати тестування.

В моїх тестах для команди INCR Dragonfly виявився останнім:

name                        time/op
Redis1Increment          9.30µs ± 1%
RedisAllIncrement        6.68µs ± 8%

Keydb1Increment          10.8µs ± 1%
KeydbAllIncrement        8.05µs ± 1%

Dragonflydb1Increment    12.3µs ± 3%
DragonflydbAllIncrement  14.6µs ± 3%

Ще й помилку отримав:

        	Error:      	Received unexpected error:
        	            	read tcp 172.30.0.11:48244->172.30.0.6:6379: i/o timeout

Хм, цікаво, дякую. В них в бенчмарках не нашов тестів на саме цю команду

Для популяризації потрібний Rust, а Dragonfly написаний на C та C++, автор один.

Для популяризації серед мейнтенерів — мабуть. Прикладним користувачам, думаю, не принципово на чому воно написано

Як бачиш мейнтенерів в проєкті мало.

Підписатись на коментарі