Lancering van Dragonfly 1.0, een systeem voor gegevenscaching in het RAM

De release van het gegevensopslag- en caching systeem Dragonfly heeft plaatsgevonden. Dit systeem beheert gegevens in een key/value-formaat en kan worden gebruikt als een lichtgewicht oplossing om de prestaties van zwaarbelaste websites te versnellen, door langzaam databaseverzoeken en tussenliggende gegevens in het geheugen te cachen. Dragonfly ondersteunt de protocollen Memcached en Redis, waardoor bestaande clientbibliotheken kunnen worden gebruikt en projecten die gebruikmaken van Memcached en Redis eenvoudig naar Dragonfly kunnen worden overgezet zonder dat de code hoeft te worden herschreven.

In vergelijking met Redis behaalden we in Dragonfly bij typische belasting onder Amazon EC2 c6gn.16xlarge een 25-voudige toename in prestaties (3,8 miljoen verzoeken per seconde). In vergelijking met Memcached in de AWS-omgeving c6gn.16xlarge kon Dragonfly 4,7 keer meer schrijfpogingen per seconde verwerken (3,8 miljoen tegenover 806 duizend) en 1,77 keer meer leesverzoeken per seconde (3,7 miljoen tegenover 2,1 miljoen).

Lancering van Dragonfly 1.0, een systeem voor gegevenscaching in het RAM

In tests met 5 GB aan gegevens vereiste Dragonfly 30% minder geheugen dan Redis. Tijdens het maken van snapshots met het commando 'bgsave' steeg het geheugengebruik, maar in piekuren bleef het bijna drie keer lager dan bij Redis, terwijl de snapshot-opdracht veel sneller wordt uitgevoerd (in de Dragonfly-test werd de snapshot binnen 30 seconden geschreven, terwijl dit bij Redis 42 seconden duurde).

Lancering van Dragonfly 1.0, een systeem voor gegevenscaching in het RAM

Hoge prestaties worden bereikt door een multi-threaded architectuur zonder resource-sharing (shared-nothing), wat betekent dat elke thread een aparte, afzonderlijke handler toegewezen krijgt met zijn eigen gegevensportie, die werkt zonder mutexen en spin-locks. Voor atomiciteit bij het werken met meerdere sleutels worden lichtgewicht VLL-locks gebruikt. Voor efficiƫnte opslag van informatie in het geheugen wordt een dashtable-structuur toegepast, die een variant van gegroepeerde hash-tabellen implementeert.

Enkele mogelijkheden van Dragonfly:

  • Caching-modus waarbij automatisch oude gegevens worden vervangen door nieuwe zodra het beschikbare geheugen opraakt.
  • Ondersteuning voor het toewijzen van een levensduur aan gegevens, gedurende welke de gegevens als actueel worden beschouwd.
  • Ondersteuning voor het opslaan van de status van het opslagmedium naar de schijf op de achtergrond voor later herstel na een herstart.
  • Beschikbaarheid van de HTTP-console (verbonden met TCP-poort 6379) voor systeembeheer en API voor het leveren van metrics, compatibel met Prometheus.
  • Ondersteuning voor 185 Redis-commando's, wat ongeveer overeenkomt met de functionaliteit van Redis 5.
  • Ondersteuning voor alle Memcached-commando's, behalve CAS (check-and-set).
  • Ondersteuning voor asynchrone bewerkingen voor het maken van snapshots.
  • Voorspelbaar geheugenverbruik.
  • Ingebouwde Lua 5.4-interpreter.
  • Ondersteuning voor complexe gegevenstypen zoals hashes, sets, lijsten (ZSET, HSET, LIST, SETS en STRING) en gegevens in JSON-formaat.
  • Ondersteuning voor opslagreplicatie voor fouttolerantie en load balancing.

De Dragonfly-code is geschreven in C/C++ en wordt verspreid onder de BSL (Business Source License). De BSL-licentie werd voorgesteld door de mede-oprichters van MySQL als alternatief voor het Open Core-model. Het idee achter BSL is dat de code voor uitgebreide functionaliteit aanvankelijk beschikbaar is voor wijzigingen, maar gedurende een bepaalde periode gratis alleen kan worden gebruikt onder aanvullende voorwaarden, waarvoor een commerciƫle licentie nodig is. De aanvullende licentievoorwaarden van het Dragonfly-project bepalen dat de code op 15 maart 2028 naar de Apache 2.0-licentie moet worden overgezet. Tot die tijd staat de licentie gebruik van de code alleen toe voor het ondersteunen van eigen diensten en producten, maar verbiedt het gebruik voor het creƫren van betaalde cloudservices die bovenop Dragonfly functioneren.

Versie Dragonfly 1.0 is opmerkelijk vanwege de implementatie van de ondersteuning voor het repliceren van gegevens van de primaire naar de secundaire opslag. de server Daarbij kan Dragonfly worden geconfigureerd om te functioneren als secundaire opslag, die gegevens accepteert van de primaire server, zowel op basis van Dragonfly als op basis van Redis. De API voor het beheren van replicatie is compatibel met Redis en is gebaseerd op het gebruik van de commando's ROLE en REPLICAOF (SLAVEOF).

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster