Paglabas ng Dragonfly 1.0, isang in-memory na data caching system

Ang Dragonfly in-memory caching at storage system ay inilabas, na nagmamanipula ng data sa key/value format at maaaring magamit bilang isang magaan na solusyon para sa pagpapabilis ng gawain ng mga site na may mataas na load, pag-cache ng mabagal na mga query sa DBMS at intermediate data sa RAM. Sinusuportahan ng Dragonfly ang mga protocol ng Memcached at Redis, na nagbibigay-daan sa iyong gumamit ng mga kasalukuyang library ng kliyente at maglipat ng mga proyekto gamit ang Memcached at Redis sa Dragonfly nang hindi muling ginagawa ang code.

Kung ikukumpara sa Redis, nakamit ng Dragonfly ang 2-fold na pagtaas sa performance (6 milyong kahilingan kada segundo) para sa karaniwang mga workload sa Amazon EC16 c25gn.3.8xlarge environment. Kung ikukumpara sa Memcached sa AWS c6gn.16xlarge environment, nakapagsagawa ang Dragonfly ng 4.7 beses na higit pang mga kahilingan sa pagsulat bawat segundo (3.8 milyon kumpara sa 806 na libo) at 1.77 beses na mas maraming read request bawat segundo (3.7 milyon kumpara sa 2.1 milyon).

Paglabas ng Dragonfly 1.0, isang in-memory na data caching system

Sa mga pagsubok para sa pag-iimbak ng 5 GB ng data, kailangan ng Dragonfly ng 30% 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 moment ay nanatili itong halos tatlong beses na mas mababa kaysa sa Redis, at ang snapshot recording operation mismo ay mas mabilis (sa pagsubok, ang isang snapshot sa Dragonfly ay isinulat sa 30 segundo, habang Redis - sa 42 segundo).

Paglabas ng Dragonfly 1.0, isang in-memory na data caching system

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.

Ang ilang mga tampok ng Dragonfly:

  • Caching mode, na awtomatikong pinapalitan ang lumang data ng bagong data pagkatapos maubos ang libreng memorya.
  • Suporta para sa pagbubuklod sa data habang-buhay kung saan ang data ay itinuturing na may kaugnayan.
  • Suporta para sa pag-flush ng estado ng storage sa disk sa background para sa pagbawi sa ibang pagkakataon pagkatapos ng pag-restart.
  • Ang pagkakaroon ng isang HTTP console (nagbubuklod sa TCP port 6379) para sa pamamahala ng system at isang API para sa mga bumabalik na sukatan, na tugma sa Prometheus.
  • Suporta para sa 185 Redis command, na halos katumbas ng functionality ng Redis 5 release.
  • Sinusuportahan ang lahat ng Memcached command maliban sa CAS (check-and-set).
  • Suporta para sa mga asynchronous na operasyon para sa paggawa ng mga snapshot.
  • Nahuhulaang pagkonsumo ng memorya.
  • Built-in na Lua 5.4 interpreter.
  • Sinusuportahan ang mga kumplikadong uri ng data gaya ng mga hash, set, listahan (ZSET, HSET, LIST, SETS at STRING) at data ng JSON.
  • Sinusuportahan ang storage replication para sa fault tolerance at load balancing.

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 para sa proyekto ng Dragonfly ay nangangailangan ng code na ilipat sa Apache 2.0 na lisensya sa Marso 15, 2028. 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.

Ang Bersyon ng Dragonfly 1.0 ay kilala sa pagpapatupad nito ng suporta para sa pagkopya ng data mula sa pangunahing server hanggang sa pangalawa. Gayunpaman, maaaring i-configure ang Dragonfly upang magamit bilang pangalawang storage na tumatanggap ng data mula sa isang pangunahing server batay sa Dragonfly o batay sa Redis. Ang replication management API ay tugma sa Redis at nakabatay ito sa paggamit ng ROLE at REPLICAOF (SLAVEOF) na mga utos.

Pinagmulan: opennet.ru

Magdagdag ng komento