„Dragonfly“ projektas kuria greitesnį „Redis“ ir „Memcached“ pakaitalą

Galimas pirmasis „Dragonfly“ atmintinės talpyklos sistemos leidimas, teikiantis „Memcached“ ir „Redis“ protokolų palaikymą, tačiau leidžiantis vykdyti užklausas su daug didesniu našumu ir sunaudojant mažiau atminties. Sistema apdoroja duomenis rakto / vertės formatu ir gali būti naudojamas kaip lengvas sprendimas, siekiant pagreitinti didelės apkrovos svetainių darbą, kaupiant lėtas užklausas į DBVS ir tarpinius duomenis RAM. „Dragonfly“ kodas parašytas C/C++ ir platinamas pagal BSL (verslo šaltinio licenciją).

BSL licenciją kaip alternatyvą Open Core modeliui pasiūlė MySQL įkūrėjai. BSL esmė ta, kad išplėstinio funkcionalumo kodas iš pradžių yra prieinamas modifikacijai, tačiau kurį laiką juo galima naudotis nemokamai tik esant papildomoms sąlygoms, kurių apeiti reikia įsigyti komercinę licenciją. Papildomos „Dragonfly“ projekto licencijos sąlygos reikalauja, kad kodas į „Apache 2.0“ licenciją būtų perkeltas tik 1 m. birželio 2027 d. Iki to laiko licencija leidžia naudoti kodą tik siekiant užtikrinti savo paslaugų ir produktų veikimą, tačiau draudžiama naudoti kuriant mokamas debesijos paslaugas, kurios veikia kaip Dragonfly priedas.

Pasak kūrėjų ir demonstruotų testų, „Dragonfly“ teigia esanti greičiausia atminties saugojimo sistema. Palyginti su Redis, „Dragonfly“ pasiekė 25 kartus didesnį našumą ir tris kartus sumažino atminties sunaudojimą esant tipiniams darbo krūviams. Vienas Dragonfly serveris gali apdoroti milijonus užklausų per sekundę, pavyzdžiui, Amazon EC2 c6gn.16xlarge aplinkoje buvo galima pasiekti 3.8 milijono užklausų per sekundę našumą.

„Dragonfly“ projektas kuria greitesnį „Redis“ ir „Memcached“ pakaitalą

Atliekant bandymus, skirtus 5 GB duomenų saugojimui, „Dragonfly“ prireikė 30% mažiau atminties nei „Redis“. Kuriant momentines nuotraukas su komanda „bgsave“, atminties suvartojimas didėja, tačiau piko metu jos išlieka beveik tris kartus mažiau nei Redis, o pati momentinių nuotraukų įrašymo operacija yra daug greitesnė (teste momentinė nuotrauka Dragonfly buvo parašyta 30 m. sekundžių, o Redis – per 42 sekundes).

„Dragonfly“ projektas kuria greitesnį „Redis“ ir „Memcached“ pakaitalą

Didelis našumas pasiekiamas dėl kelių gijų architektūros nesidalinant ištekliais (bendrai nieko), o tai reiškia, kad kiekvienai gijai priskiriamas atskiras procesorius su savo duomenų dalimi, veikiantis be nutildymo ir sukimosi užraktų. Siekiant užtikrinti atomiškumą dirbant su keliais raktais, naudojamos lengvos VLL spynos. Norint efektyviai saugoti informaciją atmintyje, naudojama dashtable struktūra, kuri įgyvendina skaidomos maišos lentelės tipą.

Tarp pirmojoje laidoje esančių funkcijų pažymimas RESP2 protokolo ir 130 Redis komandų palaikymas, kuris maždaug atitinka Redis 2.8 leidimo funkcionalumą. Be to, „Dragonfly“ palaiko visas atmintyje išsaugotas komandas, išskyrus CAS (patikrinti ir nustatyti), palaiko asinchronines momentinių nuotraukų kūrimo operacijas, nuspėjamą atminties suvartojimą, įtaisytąjį Lua 5.4 interpretatorių ir palaiko sudėtingus duomenų tipus, tokius kaip maišos, rinkinius ir sąrašus (ZSET, HSET, LIST, SETS ir STRING).

Atskirai galimas talpyklos režimas, kuris, išnaudojus laisvą atmintį, automatiškai pakeičia senus duomenis naujais. Prie duomenų galima prisegti visą gyvenimą, per kurį duomenys laikomi aktualiais. Saugyklos būsena gali būti įkelta į diską fone, kad vėliau būtų galima atkurti po iš naujo. Sistemai valdyti pateikiama HTTP konsolė (susijungiama su TCP prievadu 6379) ir API, skirta metrikos grąžinimui, suderinama su Prometheus. Ateities versijose planuojame išplėsti Redis komandų palaikymą ir įdiegti galimybę atkartoti saugyklą, kad būtų užtikrintas atsparumas gedimams ir apkrovos balansavimas.

Šaltinis: opennet.ru

Добавить комментарий