Ang proyekto ng Dragonfly ay bumubuo ng isang mas mabilis na kapalit para sa Redis at Memcached

Available ang unang release ng Dragonfly in-memory caching system, na nagbibigay ng suporta para sa Memcached at Redis protocol, ngunit pinapayagan ang mga query na maisagawa nang may mas mataas na performance at mas kaunting memory consumption. Ang system ay nagmamanipula ng data sa key/value format at maaaring magamit bilang isang magaan na solusyon upang pabilisin ang gawain ng mga site na may mataas na load, pag-cache ng mabagal na mga query sa DBMS at intermediate data sa RAM. Ang Dragonfly code ay nakasulat sa C/C++ at ipinamamahagi sa ilalim ng BSL (Business Source License).

Ang lisensya ng BSL ay iminungkahi ng mga co-founder ng MySQL bilang isang alternatibo sa Open Core na modelo. Ang kakanyahan ng BSL ay ang code ng advanced na pag-andar ay magagamit sa simula para sa pagbabago, ngunit sa loob ng ilang panahon ay magagamit lamang nang walang bayad kung ang mga karagdagang kundisyon ay natutugunan, na nangangailangan ng pagbili ng isang komersyal na lisensya upang makaiwas. Ang mga karagdagang tuntunin sa lisensya ng proyekto ng Dragonfly ay nangangailangan ng code na ilipat sa Apache 2.0 na lisensya lamang sa Hunyo 1, 2027. Hanggang sa oras na ito, pinapayagan lamang ng lisensya ang paggamit ng code upang matiyak ang pagpapatakbo ng mga serbisyo at produkto nito, ngunit ipinagbabawal ang paggamit para sa paglikha ng mga bayad na serbisyo sa cloud na nagsisilbing add-on sa Dragonfly.

Ayon sa mga developer at nagpakita ng mga pagsubok, inaangkin ng Dragonfly na siya ang pinakamabilis na sistema ng pag-iimbak ng memorya. Kung ikukumpara sa Redis, nakamit ng Dragonfly ang 25-tiklop na pagtaas sa pagganap at tatlong beses na pagbawas sa pagkonsumo ng memorya para sa mga karaniwang workload. Ang isang Dragonfly server ay maaaring magproseso ng milyun-milyong kahilingan sa bawat segundo, halimbawa, sa Amazon EC2 c6gn.16xlarge na kapaligiran posible na makamit ang pagganap na 3.8 milyong kahilingan bawat segundo.

Ang proyekto ng Dragonfly ay bumubuo ng isang mas mabilis na kapalit para sa Redis at Memcached

Sa mga pagsubok para sa pag-iimbak ng 5 GB ng data, kailangan ng Dragonfly ng 30% na mas kaunting memorya kaysa sa Redis. Kapag lumilikha ng mga snapshot gamit ang command na "bgsave", tumataas ang pagkonsumo ng memorya, ngunit sa mga peak na sandali ay nananatiling halos tatlong beses na mas mababa kaysa sa Redis, at ang operasyon ng pag-record ng snapshot mismo ay mas mabilis (sa pagsubok, isang snapshot sa Dragonfly ay isinulat sa 30 segundo, habang Redis - sa 42 segundo).

Ang proyekto ng Dragonfly ay bumubuo ng isang mas mabilis na kapalit para sa Redis at Memcached

Ang mataas na pagganap ay nakakamit salamat sa isang multi-threaded na arkitektura na walang pagbabahagi ng mga mapagkukunan (shared-nothing), na nangangahulugan na ang bawat thread ay itinalaga ng isang hiwalay na hiwalay na processor na may sarili nitong bahagi ng data, gumagana nang walang mga mutex at spin lock. Upang matiyak ang atomicity kapag nagtatrabaho sa maraming key, ginagamit ang magaan na VLL lock. Upang mahusay na mag-imbak ng impormasyon sa memorya, ang dashtable na istraktura ay ginagamit, na nagpapatupad ng isang uri ng partitioned hash table.

Kabilang sa mga feature na available sa unang release, ang suporta para sa RESP2 protocol at 130 Redis commands ay nabanggit, na humigit-kumulang tumutugma sa functionality ng Redis 2.8 release. Bilang karagdagan, sinusuportahan ng Dragonfly ang lahat ng memcached command maliban sa CAS (check-and-set), nagbibigay ng suporta para sa mga asynchronous na operasyon para sa paggawa ng mga snapshot, nagbibigay ng predictable memory consumption, nagbibigay ng built-in na Lua 5.4 interpreter, at sumusuporta sa mga kumplikadong uri ng data tulad ng mga hash, set, at listahan (ZSET, HSET, LIST, SETS at STRING).

Ang isang caching mode ay hiwalay na magagamit, na awtomatikong pinapalitan ang lumang data ng bagong data pagkatapos maubos ang libreng memorya. Posibleng mag-attach ng panghabambuhay sa data kung saan itinuturing na may kaugnayan ang data. Ang katayuan ng imbakan ay maaaring i-flush sa disk sa background para sa pagbawi sa ibang pagkakataon pagkatapos ng pag-restart. Para pamahalaan ang system, may ibibigay na HTTP console (nagbubuklod sa TCP port 6379) at isang API para sa mga bumabalik na sukatan, na tugma sa Prometheus. Sa mga susunod na bersyon, plano naming palawakin ang suporta para sa mga utos ng Redis at ipatupad ang mga kakayahan sa pagtitiklop ng storage para sa fault tolerance at load balancing.

Pinagmulan: opennet.ru

Magdagdag ng komento