Veröffentlichung von Dragonfly 1.0, einem System zur Zwischenspeicherung von Daten im Arbeitsspeicher

Die Veröffentlichung des Dragonfly-Caching- und Datenspeichersystems, das Daten im SchlĂŒssel/Wert-Format verwaltet und als leichtgewichtige Lösung zur Beschleunigung hochbelasteter Webseiten eingesetzt werden kann, fand statt. Es cachiert langsame Anfragen an das DBMS und Zwischeninformationen im Arbeitsspeicher. Dragonfly unterstĂŒtzt die Protokolle Memcached und Redis, was die Nutzung bereits bestehender Clientbibliotheken ermöglicht und einen nahtlosen Wechsel zu Dragonfly fĂŒr Projekte, die Memcached und Redis verwenden, ohne Codeanpassungen erlaubt.

Im Vergleich zu Redis konnte Dragonfly unter typischen Lastbedingungen in einer Amazon EC2 c6gn.16xlarge-Umgebung eine 25-fache Leistungssteigerung erreichen (3,8 Millionen Anfragen pro Sekunde). Im Vergleich zu Memcached in einer AWS-Umgebung c6gn.16xlarge konnte Dragonfly 4,7-mal so viele Schreibanfragen pro Sekunde (3,8 Millionen gegenĂŒber 806.000) sowie 1,77-mal so viele Leseanfragen pro Sekunde (3,7 Millionen gegenĂŒber 2,1 Millionen) verarbeiten.

Veröffentlichung von Dragonfly 1.0, einem System zur Zwischenspeicherung von Daten im Arbeitsspeicher

In Tests zur Speicherung von 5 GB Daten benötigte Dragonfly 30 % weniger Speicher als Redis. WĂ€hrend der Erstellung von Snapshots mit dem Befehl „bgsave“ steigt der Speicherverbrauch an, bleibt jedoch zu Spitzenzeiten fast dreimal niedriger als bei Redis, und der Snapshot-Schreibvorgang wird wesentlich schneller ausgefĂŒhrt (im Test wurde ein Snapshot in Dragonfly in 30 Sekunden und in Redis in 42 Sekunden geschrieben).

Veröffentlichung von Dragonfly 1.0, einem System zur Zwischenspeicherung von Daten im Arbeitsspeicher

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.

Einige Funktionen von Dragonfly:

  • Ein Cachemodus, der automatisch das VerdrĂ€ngen alter Daten durch neue nach Erschöpfung des freien Speichers gewĂ€hrleistet.
  • UnterstĂŒtzung fĂŒr die Bindung der Lebensdauer von Daten an den Zeitraum, in dem die Daten als aktuell betrachtet werden.
  • UnterstĂŒtzung fĂŒr das Hintergrund-Backup des Speicherstatus auf die Festplatte zur spĂ€teren Wiederherstellung nach einem Neustart.
  • VerfĂŒgbarkeit eines HTTP-Systems (gebunden an den TCP-Port 6379) zur Verwaltung des Systems und eine API zur Bereitstellung von Metriken, die mit Prometheus kompatibel ist.
  • UnterstĂŒtzung von 185 Redis-Befehlen, was ungefĂ€hr der FunktionalitĂ€t von Redis 5 entspricht.
  • UnterstĂŒtzung aller Memcached-Befehle, außer CAS (check-and-set).
  • UnterstĂŒtzung asynchroner Operationen zur Erstellung von Snapshots.
  • Vorhersehbarer Speicherverbrauch.
  • Integrierter Lua 5.4-Interpreter.
  • UnterstĂŒtzung komplexer Datentypen wie Hashes, Mengen, Listen (ZSET, HSET, LIST, SETS und STRING) sowie von Daten im JSON-Format.
  • UnterstĂŒtzung der Replikation des Speichers zur GewĂ€hrleistung von Fehlertoleranz und Lastverteilung.

Der Dragonfly-Code ist in C/C++ geschrieben und wird 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 ist, dass der Code fĂŒr erweiterte Funktionen initial zur Bearbeitung bereitsteht, aber fĂŒr eine gewisse Zeit nur unter zusĂ€tzlichen Bedingungen kostenlos genutzt werden kann, deren Umgehung den Erwerb einer kommerziellen Lizenz erfordert. Die zusĂ€tzlichen Lizenzbedingungen des Dragonfly-Projekts bestimmen, dass der Code am 15. MĂ€rz 2028 auf die Lizenz Apache 2.0 ĂŒbertragen werden muss. Bis zu diesem Zeitpunkt erlaubt die Lizenz die Nutzung des Codes nur zur UnterstĂŒtzung der eigenen Dienste und Produkte, verbietet jedoch die Anwendung zur Erstellung kostenpflichtiger Cloud-Dienste, die auf Dragonfly basieren.

Die Version Dragonfly 1.0 ist bemerkenswert durch die Implementierung der UnterstĂŒtzung der Replikation von Daten von primĂ€ren Server auf sekundĂ€re Speicher. Dragonfly kann so konfiguriert werden, dass es als sekundĂ€rer Speicher fungiert, der Daten von einem primĂ€ren Server sowohl auf der Basis von Dragonfly als auch von Redis empfĂ€ngt. Die API zur Verwaltung der Replikation ist mit Redis kompatibel und basiert auf den Befehlen ROLE und REPLICAOF (SLAVEOF).

Quelle: opennet.ru

60GB SSD 8Gb DDR4