Das Projekt Dragonfly entwickelt eine schnellere Alternative zu Redis und Memcached

Die erste Ausgabe des Dragonfly-Datencache-Systems im Arbeitsspeicher ist verfĂŒgbar und unterstĂŒtzt die Protokolle Memcached und Redis, ermöglicht jedoch Anfragen mit deutlich höherer Leistung und geringerem Speicherverbrauch. Das System manipuliert Daten im SchlĂŒssel/Wert-Format und kann als leichtgewichtige Lösung zur Beschleunigung hochlastiger Websites eingesetzt werden, die langsame Anfragen an Datenbanksysteme und Zwischenspeicher im Arbeitsspeicher cachen. Der Code von Dragonfly ist in C/C++ geschrieben und unter der BSL (Business Source License) lizenziert.

Die BSL-Lizenz wurde von den MitbegrĂŒndern von MySQL als Alternative zum Open-Core-Modell vorgeschlagen. Der Kern der BSL besteht darin, dass der Code der erweiterten FunktionalitĂ€t anfangs fĂŒr Änderungen verfĂŒgbar ist, aber fĂŒr eine bestimmte Zeit kostenlos genutzt werden kann, sofern zusĂ€tzliche Bedingungen erfĂŒllt sind, deren Umgehung den Erwerb einer kommerziellen Lizenz erfordert. Die zusĂ€tzlichen Lizenzbedingungen fĂŒr das Dragonfly-Projekt legen fest, dass der Code erst am 1. Juni 2027 auf die Apache 2.0-Lizenz ĂŒbertragen werden darf. Bis zu diesem Zeitpunkt erlaubt die Lizenz die Nutzung des Codes nur zur UnterstĂŒtzung eigener Dienste und Produkte, verbietet jedoch die Verwendung zur Erstellung kostenpflichtiger Cloud-Dienste, die auf Dragonfly aufbauen.

Laut den Entwicklern und den durchgefĂŒhrten Tests beansprucht Dragonfly den Titel des schnellsten Speichersystems im Arbeitsspeicher. Im Vergleich zu Redis konnte Dragonfly bei typischen Lastarten eine 25-fache Leistungssteigerung und eine dreifache Einsparung des Speicherverbrauchs erreichen. Ein Server Dragonfly kann Millionen von Anfragen pro Sekunde verarbeiten; beispielsweise wurde in der Umgebung von Amazon EC2 c6gn.16xlarge eine Leistung von 3,8 Millionen Anfragen pro Sekunde erreicht.

Das Projekt Dragonfly entwickelt eine schnellere Alternative zu Redis und Memcached

In Tests mit der Speicherung von 5 GB Daten benötigte Dragonfly 30% weniger Speicher als Redis. WĂ€hrend der Erstellung von Snapshots durch das Kommando "bgsave" steigt der Speicherverbrauch an, bleibt jedoch zu Spitzenzeiten fast dreimal geringer als bei Redis, wĂ€hrend die Snapshot-Schreiboperation erheblich schneller durchgefĂŒhrt wird (im Test wurde der Snapshot in Dragonfly in 30 Sekunden, in Redis in 42 Sekunden geschrieben).

Das Projekt Dragonfly entwickelt eine schnellere Alternative zu Redis und Memcached

Die hohe Leistung wird durch die mehrstufige Architektur ohne Ressourcenteilung (shared-nothing) erreicht, die besagt, dass jedem Thread ein separater, isolierter Prozess mit einem eigenen Datenpaket zugeordnet wird, der ohne Mutexe und Spinlocks arbeitet. Um die AtomaritĂ€t bei der Arbeit mit mehreren SchlĂŒsseln zu gewĂ€hrleisten, werden leichte VLL-Sperren verwendet. FĂŒr die effektive Speicherung von Informationen im Speicher wird eine dashtable-Struktur verwendet, die eine Variante von partitionierten Hash-Tabellen implementiert.

In der ersten Version wird die UnterstĂŒtzung des RESP2-Protokolls und von 130 Redis-Befehlen hervorgehoben, was ungefĂ€hr der FunktionalitĂ€t von Redis 2.8 entspricht. DarĂŒber hinaus unterstĂŒtzt Dragonfly alle Memcached-Befehle, mit Ausnahme von CAS (Check-and-Set), bietet UnterstĂŒtzung fĂŒr asynchrone Operationen zur Erstellung von Snapshots, gewĂ€hrleistet vorhersehbaren Speicherverbrauch, enthĂ€lt einen integrierten Interpreter fĂŒr Lua 5.4 und unterstĂŒtzt komplexe Datentypen wie Hashes, Mengen und Listen (ZSET, HSET, LIST, SET und STRING).

Ein separater Cache-Modus ist verfĂŒgbar, bei dem automatisch alte Daten durch neue ersetzt werden, wenn der verfĂŒgbare Speicher aufgebraucht ist. Es ist möglich, eine Lebensdauer fĂŒr die Daten festzulegen, wĂ€hrend der die Daten als aktuell gelten. Der Zustand des Speichers kann im Hintergrund auf die Festplatte gespeichert werden, um nach einem Neustart wiederhergestellt zu werden. Um das System zu verwalten, steht eine HTTP-Konsole zur VerfĂŒgung (gebunden an den TCP-Port 6379) sowie eine API zur Bereitstellung von Metriken, die mit Prometheus kompatibel ist. In zukĂŒnftigen Versionen ist geplant, die UnterstĂŒtzung fĂŒr Redis-Befehle zu erweitern und die Möglichkeit zur Replikation des Speichers zur GewĂ€hrleistung von Ausfallsicherheit und Lastenausgleich zu implementieren.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster