Dragonfly projekt arendab Redise ja Memcachedi jaoks kiiremat asendust

Saadaval on Dragonfly mälusisese vahemälusüsteemi esimene väljalase, mis toetab Memcachedi ja Redise protokolle, kuid võimaldab täita päringuid palju suurema jõudlusega ja väiksema mälukuluga. Süsteem töötleb andmeid võtme/väärtuse vormingus ja seda saab kasutada kerge lahendusena suure koormusega saitide töö kiirendamiseks, aeglaste päringute vahemällu salvestamiseks DBMS-i ja RAM-i vaheandmeteks. Dragonfly kood on kirjutatud C/C++ keeles ja seda levitatakse BSL-i (Business Source License) all.

BSL-i litsentsi pakkusid välja MySQL-i kaasasutajad alternatiivina Open Core mudelile. BSL-i olemus seisneb selles, et täiustatud funktsionaalsuse kood on algselt saadaval muutmiseks, kuid mõnda aega saab seda tasuta kasutada vaid juhul, kui on täidetud lisatingimused, millest möödahiilimiseks on vaja osta kommertslitsents. Dragonfly projekti täiendavad litsentsitingimused nõuavad koodi ülekandmist Apache 2.0 litsentsile alles 1. juunil 2027. Kuni selle ajani lubab litsents koodi kasutada ainult oma teenuste ja toodete toimimise tagamiseks, kuid keelab kasutamise tasuliste pilveteenuste loomiseks, mis toimivad Dragonfly lisandmoodulina.

Arendajate ja demonstreeritud testide sõnul väidab Dragonfly end olevat kiireim mälusalvestussüsteem. Võrreldes Redisega saavutas Dragonfly 25-kordse jõudluse kasvu ja kolmekordse mälukulu vähenemise tüüpiliste töökoormuste puhul. Üks Dragonfly server suudab töödelda miljoneid päringuid sekundis, näiteks Amazon EC2 c6gn.16xlarge keskkonnas oli võimalik saavutada jõudlus 3.8 miljonit päringut sekundis.

Dragonfly projekt arendab Redise ja Memcachedi jaoks kiiremat asendust

5 GB andmete salvestamise testides vajas Dragonfly 30% vähem mälu kui Redis. Piltide loomisel käsuga “bgsave” mälutarve suureneb, kuid tipphetkedel jääb see peaaegu kolm korda väiksemaks kui Redis ja hetktõmmiste salvestamise toiming ise on palju kiirem (testis kirjutati Dragonfly hetktõmmis 30. sekundit, Redis aga 42 sekundiga).

Dragonfly projekt arendab Redise ja Memcachedi jaoks kiiremat asendust

Suur jõudlus saavutatakse tänu mitme lõimega arhitektuurile ilma ressursside jagamiseta (jagatud-mitte-midagi), mis tähendab, et igale lõimele määratakse eraldi protsessor, millel on oma andmeosa ja mis töötab ilma mutexide ja spin-lukkudeta. Aatomilisuse tagamiseks mitme võtmega töötamisel kasutatakse kergeid VLL lukke. Teabe tõhusaks mällu salvestamiseks kasutatakse dashtable-struktuuri, mis rakendab teatud tüüpi partitsioonitud räsitabelit.

Esimeses versioonis saadaolevate funktsioonide hulgas on märgitud RESP2 protokolli ja 130 Redise käsu tugi, mis vastab ligikaudu Redis 2.8 väljalaske funktsioonidele. Lisaks toetab Dragonfly kõiki vahemällu salvestatud käske, välja arvatud CAS (check-and-set), toetab asünkroonseid toiminguid hetktõmmiste loomiseks, võimaldab prognoositavat mälutarbimist, pakub sisseehitatud Lua 5.4 interpretaatorit ja toetab keerulisi andmetüüpe, nagu räsid, komplektid ja loendid (ZSET, HSET, LIST, SETS ja STRING).

Eraldi on saadaval vahemälurežiim, mis asendab vanad andmed automaatselt uute andmetega pärast vaba mälu ammendumist. Andmetele on võimalik lisada eluaeg, mille jooksul andmeid peetakse asjakohaseks. Salvestusoleku saab taustal kettale loputada, et hiljem pärast taaskäivitamist taastada. Süsteemi haldamiseks on ette nähtud HTTP-konsool (seondub TCP-pordiga 6379) ja API mõõdikute tagastamiseks, mis ühildub Prometheusega. Tulevastes versioonides plaanime laiendada Redise käskude tuge ja rakendada salvestusruumi paljundamise võimalust, et tagada tõrketaluvus ja koormuse tasakaalustamine.

Allikas: opennet.ru

Lisa kommentaar