Uitgave van Dragonfly 1.0, een in-memory datacaching-systeem

Het Dragonfly in-memory caching- en opslagsysteem is uitgebracht, dat gegevens in sleutel/waarde-formaat manipuleert en kan worden gebruikt als een lichtgewicht oplossing voor het versnellen van het werk van zwaarbelaste sites, het cachen van langzame query's naar het DBMS en tussenliggende gegevens in RAM. Dragonfly ondersteunt de Memcached- en Redis-protocollen, waardoor u bestaande clientbibliotheken kunt gebruiken en projecten met behulp van Memcached en Redis naar Dragonfly kunt overbrengen zonder de code te hoeven herwerken.

Vergeleken met Redis behaalde Dragonfly een 2-voudige prestatieverbetering (6 miljoen verzoeken per seconde) voor typische workloads in de Amazon EC16 c25gn.3.8xlarge-omgeving. Vergeleken met Memcached in de AWS c6gn.16xlarge-omgeving kon Dragonfly 4.7 keer meer schrijfverzoeken per seconde uitvoeren (3.8 miljoen versus 806 duizend) en 1.77 keer meer leesverzoeken per seconde (3.7 miljoen versus 2.1 miljoen).

Uitgave van Dragonfly 1.0, een in-memory datacaching-systeem

In tests voor het opslaan van 5 GB aan gegevens had Dragonfly 30% minder geheugen nodig dan Redis. Bij het maken van snapshots met de opdracht "bgsave" neemt het geheugengebruik toe, maar op piekmomenten bleef het bijna drie keer minder dan in Redis, en de snapshot-opname zelf is veel sneller (in de test werd een snapshot in Dragonfly geschreven in 30 seconden, terwijl Redis - in 42 seconden).

Uitgave van Dragonfly 1.0, een in-memory datacaching-systeem

Hoge prestaties worden bereikt dankzij een multi-threaded architectuur zonder het delen van bronnen (shared-nothing), wat betekent dat elke thread een afzonderlijke afzonderlijke processor krijgt toegewezen met zijn eigen gegevensgedeelte, die werkt zonder mutexen en spinlocks. Om atomiciteit te garanderen bij het werken met meerdere sleutels, wordt gebruik gemaakt van lichtgewicht VLL-sloten. Om informatie efficiënt in het geheugen op te slaan, wordt de dashtable-structuur gebruikt, die een soort gepartitioneerde hashtabel implementeert.

Enkele kenmerken van Dragonfly:

  • Caching-modus, die automatisch oude gegevens vervangt door nieuwe gegevens nadat het vrije geheugen is uitgeput.
  • Ondersteuning voor het binden aan gegevens gedurende een leven waarin de gegevens als relevant worden beschouwd.
  • Ondersteuning voor het leegmaken van de opslagstatus naar schijf op de achtergrond voor later herstel na opnieuw opstarten.
  • De aanwezigheid van een HTTP-console (bindt aan TCP-poort 6379) voor systeembeheer en een API voor het retourneren van statistieken, compatibel met Prometheus.
  • Ondersteuning voor 185 Redis-opdrachten, wat ongeveer gelijk is aan de functionaliteit van de Redis 5-release.
  • Ondersteunt alle Memcached-opdrachten behalve CAS (check-and-set).
  • Ondersteuning voor asynchrone bewerkingen voor het maken van snapshots.
  • Voorspelbaar geheugenverbruik.
  • Ingebouwde Lua 5.4-tolk.
  • Ondersteunt complexe gegevenstypen zoals hashes, sets, lijsten (ZSET, HSET, LIST, SETS en STRING) en JSON-gegevens.
  • Ondersteunt opslagreplicatie voor fouttolerantie en taakverdeling.

De Dragonfly-code is geschreven in C/C++ en wordt gedistribueerd onder de BSL (Business Source License). De BSL-licentie werd door de medeoprichters van MySQL voorgesteld als alternatief voor het Open Core-model. De essentie van BSL is dat de code met geavanceerde functionaliteit in eerste instantie beschikbaar is voor wijziging, maar gedurende enige tijd alleen gratis kan worden gebruikt als aan aanvullende voorwaarden wordt voldaan, die de aanschaf van een commerciële licentie vereisen om te omzeilen. Aanvullende licentievoorwaarden voor het Dragonfly-project vereisen dat de code op 2.0 maart 15 wordt overgedragen naar de Apache 2028-licentie. Tot die tijd staat de licentie het gebruik van de code alleen toe om de werking van zijn diensten en producten te garanderen, maar verbiedt het gebruik voor het creëren van betaalde clouddiensten die fungeren als een add-on voor Dragonfly.

Versie Dragonfly 1.0 valt op door de implementatie van ondersteuning voor gegevensreplicatie van de primaire server naar de secundaire server. Dragonfly kan echter worden geconfigureerd om te worden gebruikt als secundaire opslag die gegevens ontvangt van een primaire server op basis van Dragonfly of op basis van Redis. De replicatiebeheer-API is compatibel met Redis en is gebaseerd op het gebruik van de opdrachten ROLE en REPLICAOF (SLAVEOF).

Bron: opennet.ru

Voeg een reactie