Projekti Dragonfly po zhvillon një zëvendësim më të shpejtë për Redis dhe Memcached

Lëshimi i parë i sistemit të ruajtjes në memorie Dragonfly është i disponueshëm, duke ofruar mbështetje për protokollet Memcached dhe Redis, por duke lejuar që pyetjet të ekzekutohen me performancë shumë më të lartë dhe më pak konsum memorie. Sistemi manipulon të dhënat në formatin kyç/vlerë dhe mund të përdoret si një zgjidhje e lehtë për të përshpejtuar punën e faqeve me ngarkesë të lartë, duke depozituar në memorie pyetje të ngadalta në DBMS dhe të dhëna të ndërmjetme në RAM. Kodi Dragonfly është shkruar në C/C++ dhe shpërndahet nën BSL (Business Source License).

Licenca BSL u propozua nga bashkëthemeluesit e MySQL si një alternativë ndaj modelit Open Core. Thelbi i BSL është se kodi i funksionalitetit të avancuar fillimisht është i disponueshëm për modifikim, por për ca kohë mund të përdoret pa pagesë vetëm nëse plotësohen kushte shtesë, të cilat kërkojnë blerjen e një licence tregtare për t'u anashkaluar. Kushtet shtesë të licencës të projektit Dragonfly kërkojnë që kodi të transferohet në licencën Apache 2.0 vetëm më 1 qershor 2027. Deri në këtë kohë, licenca lejon përdorimin e kodit vetëm për të siguruar funksionimin e shërbimeve dhe produkteve të saj, por ndalon përdorimin për krijimin e shërbimeve cloud me pagesë që veprojnë si një shtesë për Dragonfly.

Sipas zhvilluesve dhe testeve të demonstruara, Dragonfly pretendon të jetë sistemi më i shpejtë i ruajtjes së memories. Krahasuar me Redis, Dragonfly arriti një rritje 25-fish të performancës dhe një reduktim trefish në konsumin e memories për ngarkesat tipike të punës. Një server Dragonfly mund të përpunojë miliona kërkesa në sekondë, për shembull, në mjedisin Amazon EC2 c6gn.16xlarge ishte e mundur të arrihej një performancë prej 3.8 milion kërkesa për sekondë.

Projekti Dragonfly po zhvillon një zëvendësim më të shpejtë për Redis dhe Memcached

Në testet për ruajtjen e të dhënave 5 GB, Dragonfly kërkonte 30% më pak memorie se Redis. Kur krijoni fotografi me komandën "bgsave", konsumi i kujtesës rritet, por në momentet e pikut mbetet pothuajse tre herë më pak se në Redis, dhe vetë operacioni i regjistrimit të fotografive është shumë më i shpejtë (në provë, një fotografi në Dragonfly u shkrua në 30 sekonda, ndërsa Redis - në 42 sekonda).

Projekti Dragonfly po zhvillon një zëvendësim më të shpejtë për Redis dhe Memcached

Performanca e lartë arrihet falë një arkitekture me shumë fije pa burime të përbashkëta (shared-nothing), që do të thotë se çdo thread i caktohet një procesor i veçantë i veçantë me pjesën e tij të të dhënave, duke punuar pa mutexes dhe spin lock. Për të siguruar atomicitetin kur punoni me çelësa të shumtë, përdoren bravë të lehtë VLL. Për të ruajtur në mënyrë efikase informacionin në memorie, përdoret struktura dashtable, e cila zbaton një lloj tabele hash të ndarë.

Ndër veçoritë e disponueshme në versionin e parë, vërehet mbështetja për protokollin RESP2 dhe 130 komanda Redis, që përafërsisht korrespondon me funksionalitetin e lëshimit Redis 2.8. Për më tepër, Dragonfly mbështet të gjitha komandat memcached përveç CAS (kontrollo dhe vendos), ofron mbështetje për operacionet asinkrone për krijimin e fotografive, siguron konsum të parashikueshëm të memories, ofron një interpretues të integruar Lua 5.4 dhe mbështet lloje komplekse të të dhënave si hash, grupe dhe lista (ZSET, HSET, LIST, SETS dhe STRING).

Një modalitet memorie është i disponueshëm veçmas, i cili zëvendëson automatikisht të dhënat e vjetra me të dhëna të reja pasi të jetë shteruar memoria e lirë. Është e mundur t'i bashkëngjitet të dhënave një jetëgjatësi gjatë së cilës të dhënat konsiderohen të rëndësishme. Gjendja e ruajtjes mund të shpërndahet në disk në sfond për rikuperim të mëvonshëm pas rinisjes. Për të menaxhuar sistemin, ofrohet një tastierë HTTP (lidhet me portin TCP 6379) dhe një API për kthimin e metrikës, në përputhje me Prometheus. Në versionet e ardhshme, ne planifikojmë të zgjerojmë mbështetjen për komandat Redis dhe të zbatojmë aftësitë e riprodhimit të ruajtjes për tolerancën e gabimeve dhe balancimin e ngarkesës.

Burimi: opennet.ru

Shto një koment