Ilmus andmete vahemĂ€lu- ja salvestussĂŒsteem Dragonfly, mis manipuleerib andmetega vĂ”tme/vÀÀrtuse formaadis ja mida saab kasutada kerge lahendusena kĂ”rge koormusega veebisaitide töö kiirendamiseks, vahemĂ€lustades aeglaseid pĂ€ringuid andmebaasist ja vaheandmeid mĂ€lus. Dragonfly toetab protokolle Memcached ja Redis, vĂ”imaldades kasutada juba olemasolevaid kliendi raamatukogusid ning kanda projekti, mis kasutab Memcached ja Redis, Dragonfly sĂŒsteemi ilma koodi ĂŒmbertegemiseta.
VĂ”rreldes Redis'iga, saavutati Dragonfly'ga tĂŒĂŒpiliste koormuste puhul Amazon EC2 c6gn.16xlarge keskkonnas 25-kordne jĂ”udluse suurenemine (3,8 miljonit pĂ€ringut sekundis). AWS keskkonnas c6gn.16xlarge sai Dragonfly teostada 4,7 korda rohkem kirjutamispĂ€ringuid sekundis (3,8 miljonit versus 806 tuhat) ja 1,77 korda rohkem lugemispĂ€ringuid sekundis (3,7 miljonit versus 2,1 miljonit).

Dragonfly nĂ”udis 5 GB andmete salvestamise testides 30% vĂ€hem mĂ€lu kui Redis. Kiirusel âbgsaveâ tehtud snapshot'ide loomisel kasvab mĂ€lu tarbimine, kuid tipphetkedel jÀÀb see peaaegu kolm korda madalamaks kui Redis, samas jĂ€llegi snapshot'i kirjutamise operatsioon toimub mĂ€rgatavalt kiiremini (Dragonfly's tehtud snapshot kirjutati 30 sekundiga, Redis omakorda 42 sekundiga).

Korge jÔudlus saavutatakse tÀnu mitme vÔtme arhitektuurile ilma ressursside jagamiseta (shared-nothing), mis tÀhendab, et iga teema jaoks on eraldi isoleeritud töötleja koos oma andmeportsjoniga, töötades ilma mutex'ide ja spin-lockideta. Mitmete vÔtmete töötlemise aatomilisuse tagamiseks kasutatakse kergkaalu blokke VLL. Informatsiooni tÔhusaks salvestamiseks mÀlus kasutatakse dashtable struktuuri, mis rakendab jaotatud hash-tabelite varianti.
MÔned Dragonfly omadused:
- Cache'i reĆŸiim, kus vanad andmed vahetatakse automaatselt uute vastu vĂ€lja pĂ€rast tasuta mĂ€lu lĂ”ppemist.
- Toetab andmete eluiga, mille jooksul andmed jÀÀvad kehtivaks.
- Toetus taustal salvestamise taastamise jaoks, et seda saaks taastada pÀrast taaskÀivitamist.
- Sisseehitatud HTTP-konsool (töötades TCP-port 6379) sĂŒsteemi haldamiseks ja API meetrikate edastamiseks, mis on ĂŒhilduv Prometheusega.
- Toetab 185 Redis kÀsku, mis vastab uue Redis 5 funktsionaalsusele.
- Toetab kÔiki Memcached kÀske, vÀlja arvatud CAS (check-and-set).
- Toetab asĂŒnkroonseid operatsioone snapshot'ide loomiseks.
- MĂ€lu tarbimine on ennustatav.
- Kaasas on Lua 5.4 tÔlgendaja.
- Toetada keerulisi andmetĂŒĂŒpe nagu hashid, kogud, loendid (ZSET, HSET, LIST, SETS ja STRING) ning JSON-formaadis andmeid.
- Toetada salvestusrepliikimist, et tagada tÔrketaluvus ja koormuse jaotus.
Dragonfly kood on kirjutatud keeltes C/C++ ja levitatakse BSL (Business Source License) litsentsi alusel. BSL litsentsi pakkusid MySQLi kaasasutajad alternatiivina Open Core mudelile. BSL pÔhimÔte on see, et laiendatud funktsionaalsuse kood on algselt muutmiseks saadaval, kuid teatud aja jooksul vÔib seda tasuta kasutada ainult tÀiendavate tingimuste jÀrgimise korral, mille möödasÔiduks on vaja osta kommertslitsents. Dragonfly projekti tÀiendavad litsentsitingimused keelavad koodi kasutamise kuni 15. mÀrtsini 2028, mil kood muudetakse Apache 2.0 litsentsi alla. Kuni selle ajani lubatakse koodi kasutada ainult oma teenuste ja toodete toimimiseks, kuid keelatakse selle kasutamine tasuliste pilveteenuste loomiseks, mis pÔhinevad Dragonflyl.
Dragonfly versioon 1.0 on mĂ€rkimisvÀÀrne andmereplikatsiooni toe elluviimise poolest. serverile teisejĂ€rgseks. Dragonfly on vĂ”imalik seadistada kasutama teisejĂ€rgse salvestusena, mis vĂ”tab andmeid esimesest serverist nii Dragonfly baasil kui ka Redis baasil. Replikatsiooni haldamise API on ĂŒhilduv Redisiga ja pĂ”hineb kĂ€skude ROLE ja REPLICAOF (SLAVEOF) rakendamisel.
Allikas: opennet.ru
