Vrystelling van Dragonfly 1.0, 'n stelsel vir die kas van data in RAM

Die Dragonfly-in-geheue-kas- en bergingstelsel is vrygestel, wat data in sleutel/waarde-formaat manipuleer en kan gebruik word as 'n liggewig-oplossing om die werk van hoogs gelaaide werwe te versnel, stadige navrae na die DBMS en intermediêre data in RAM te kas. Dragonfly ondersteun die Memcached- en Redis-protokolle, wat jou toelaat om bestaande kliëntbiblioteke te gebruik en projekte met Memcached en Redis na Dragonfly oor te dra sonder om die kode te herwerk.

In vergelyking met Redis, het Dragonfly 'n 2-voudige toename in werkverrigting (6 miljoen versoeke per sekonde) vir tipiese werkladings in die Amazon EC16 c25gn.3.8xlarge-omgewing behaal. In vergelyking met Memcached in die AWS c6gn.16xlarge omgewing, kon Dragonfly 4.7 keer meer skryfversoeke per sekonde (3.8 miljoen teenoor 806 duisend) en 1.77 keer meer leesversoeke per sekonde (3.7 miljoen teenoor 2.1 miljoen) uitvoer.

Vrystelling van Dragonfly 1.0, 'n stelsel vir die kas van data in RAM

In toetse vir die stoor van 5 GB data het Dragonfly 30% minder geheue benodig as Redis. Wanneer foto's met die "bgsave"-opdrag geskep word, neem geheueverbruik toe, maar op spitsoomblikke het dit amper drie keer minder gebly as in Redis, en die foto-opname-operasie self is baie vinniger (in die toets is 'n momentopname in Dragonfly geskryf in 30 sekondes, terwyl Redis - in 42 sekondes).

Vrystelling van Dragonfly 1.0, 'n stelsel vir die kas van data in RAM

Hoë werkverrigting word behaal danksy 'n multi-threaded argitektuur sonder om hulpbronne te deel (shared-niks), wat impliseer dat 'n aparte afsonderlike hanteerder met sy eie gedeelte data aan elke draad geheg is, sonder mutexes en spin-locks. Liggewig VLL-slotte word gebruik om atomiteit te verseker wanneer daar met veelvuldige sleutels gewerk word. Vir doeltreffende berging van inligting in die geheue, word die dashtable-struktuur gebruik, wat 'n soort gepartisioneerde hash-tabelle implementeer.

Sommige kenmerke van Dragonfly:

  • Kasmodus, wat ou data outomaties met nuwe data vervang nadat die vrye geheue uitgeput is.
  • Ondersteuning vir binding aan data 'n leeftyd waartydens die data as relevant beskou word.
  • Ondersteuning vir die spoel van stoortoestand na skyf in die agtergrond vir latere herstel na herbegin.
  • Die teenwoordigheid van 'n HTTP-konsole (bind aan TCP-poort 6379) vir stelselbestuur en 'n API vir die terugkeer van statistieke, versoenbaar met Prometheus.
  • Ondersteuning vir 185 Redis-opdragte, wat min of meer gelykstaande is aan die funksionaliteit van die Redis 5-vrystelling.
  • Ondersteun alle Memcached-opdragte behalwe CAS (kontroleer-en-stel).
  • Ondersteuning vir asynchrone bewerkings vir die skep van foto's.
  • Voorspelbare geheueverbruik.
  • Ingeboude Lua 5.4-tolk.
  • Ondersteun komplekse datatipes soos hashes, stelle, lyste (ZSET, HSET, LIST, SETS en STRING) en JSON-data.
  • Ondersteun stoorreplikasie vir fouttoleransie en lasbalansering.

Die Dragonfly-kode is in C/C++ geskryf en word onder die BSL (Business Source License) versprei. Die BSL-lisensie is deur die medestigters van MySQL voorgestel as 'n alternatief vir die Open Core-model. Die essensie van BSL is dat die kode van gevorderde funksionaliteit aanvanklik beskikbaar is vir wysiging, maar vir 'n geruime tyd gratis gebruik kan word slegs indien bykomende voorwaardes nagekom word, wat die aankoop van 'n kommersiële lisensie vereis om te omseil. Bykomende lisensiebepalings vir die Dragonfly-projek vereis dat die kode op 2.0 Maart 15 na die Apache 2028-lisensie oorgedra moet word. Tot op hierdie tydstip laat die lisensie die gebruik van die kode slegs toe om die werking van sy dienste en produkte te verseker, maar verbied die gebruik vir die skepping van betaalde wolkdienste wat as 'n byvoeging tot Dragonfly dien.

Weergawe Dragonfly 1.0 is opvallend vir sy implementering van ondersteuning vir data replikasie van die primêre bediener na die sekondêre een. Dragonfly kan egter gekonfigureer word om gebruik te word as 'n sekondêre berging wat data van 'n primêre bediener ontvang, hetsy gebaseer op Dragonfly of gebaseer op Redis. Die replikasiebestuur-API is versoenbaar met Redis en is gebaseer op die gebruik van die ROLE en REPLICAOF (SLAVEOF) opdragte.

Bron: opennet.ru

Voeg 'n opmerking