The Dragonfly project develops a faster alternative to Redis and Memcached.

De eerste release van het gegevenscachesysteem Dragonfly is beschikbaar, dat ondersteuning biedt voor de protocollen Memcached en Redis, maar verzoeken kan verwerken met veel hogere prestaties en een lager geheugenverbruik. Het systeem beheert gegevens in sleutel/waarde-indeling en kan worden gebruikt als een lichtgewicht oplossing om de prestaties van zwaar belaste websites te versnellen, door trage databaseverzoeken en tussentijdse gegevens in het werkgeheugen te cachen. De code van Dragonfly 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 principe van de BSL is dat de code voor uitgebreide functionaliteit aanvankelijk beschikbaar is voor wijzigingen, maar gedurende een bepaalde periode alleen gratis kan worden gebruikt onder aanvullende voorwaarden, waarvoor een commerciƫle licentie vereist is. De aanvullende licentievoorwaarden van het Dragonfly-project schrijven voor dat de code pas op 1 juni 2027 naar de Apache 2.0-licentie kan worden overgezet. Tot die tijd staat de licentie alleen gebruik van de code toe voor het ondersteunen van zijn eigen diensten en producten, maar verbiedt het gebruik voor het creƫren van betaalde clouddiensten die bovenop Dragonfly functioneren.

Volgens de ontwikkelaars en gedemonstreerde tests claimt Dragonfly de snelste in-memory opslagoplossing te zijn. Vergeleken met Redis heeft Dragonfly bij typische belastingstypen een prestatieverbetering van 25 keer en een geheugenbesparing van drie keer gerealiseerd. ƉƩn server Dragonfly kan miljoenen verzoeken per seconde verwerken, bijvoorbeeld in een Amazon EC2 c6gn.16xlarge-omgeving werd een prestatie van 3,8 miljoen verzoeken per seconde bereikt.

The Dragonfly project develops a faster alternative to Redis and Memcached.

In tests met 5 GB aan gegevens vereiste Dragonfly 30% minder geheugen dan Redis. Tijdens het maken van snapshots met het commando 'bgsave' neemt het geheugenverbruik toe, maar op piekmomenten blijft het bijna drie keer lager dan bij Redis, en de snapshot-operatie zelf wordt aanzienlijk sneller uitgevoerd (in de test werd de snapshot in Dragonfly binnen 30 seconden opgeslagen, terwijl Redis hiervoor 42 seconden nodig had).

The Dragonfly project develops a faster alternative to Redis and Memcached.

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.

Bij de mogelijkheden van de eerste release wordt de ondersteuning van het RESP2-protocol en 130 Redis-commando's opgemerkt, wat ongeveer overeenkomt met de functionaliteit van de Redis 2.8-release. Bovendien ondersteunt Dragonfly alle memcached-commando's, behalve CAS (check-and-set), biedt het ondersteuning voor asynchrone operaties voor het maken van snapshots, zorgt het voor voorspelbaar geheugengebruik, biedt het een ingebouwde Lua 5.4-interpreter en ondersteunt het complexe datatypes zoals hashes, verzamelingen en lijsten (ZSET, HSET, LIST, SETS en STRING).

Er is een aparte cachemodus beschikbaar waarbij automatisch oude gegevens door nieuwe worden verdrongen na het verbruiken van vrij geheugen. Het is mogelijk om een levensduur voor de gegevens in te stellen, gedurende welke de gegevens als actueel worden beschouwd. De status van de opslag kan op de achtergrond naar de schijf worden weggeschreven voor herstel na een herstart. Voor systeembeheer is er een HTTP-console beschikbaar (verbonden met TCP-poort 6379) en een API voor het aanpassen van metrics, compatibel met Prometheus. In toekomstige versies is het de bedoeling om de ondersteuning voor Redis-commando's uit te breiden en replicatie van de opslag mogelijk te maken voor redundantie en load balancing.

Bron: opennet.ru

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