Andmete vahemällu salvestamise süsteemi Dragonfly 1.0 väljalase

Välja on antud Dragonfly mälusisene vahemälu- ja salvestussüsteem, mis töötleb andmeid võtme/väärtuse formaadis ja mida saab kasutada kerge lahendusena suure koormusega saitide töö kiirendamiseks, aeglaste päringute vahemällu salvestamiseks DBMS-i ja vaheandmete muutmiseks RAM-is. Dragonfly toetab Memcachedi ja Redise protokolle, mis võimaldab kasutada olemasolevaid klienditeeke ja edastada projekte kasutades Memcachedi ja Redis Dragonfly'i ilma koodi ümber töötamata.

Võrreldes Redisega saavutas Dragonfly Amazon EC2 c6gn.16xlarge keskkonnas tüüpilise töökoormuse puhul 25-kordse jõudluse kasvu (3.8 miljonit päringut sekundis). Võrreldes Memcachediga AWS c6gn.16xlarge keskkonnas, suutis Dragonfly täita 4.7 korda rohkem kirjutamistaotlusi sekundis (3.8 miljonit versus 806 tuhat) ja 1.77 korda rohkem lugemistaotlusi sekundis (3.7 miljonit versus 2.1 miljonit).

Andmete vahemällu salvestamise süsteemi Dragonfly 1.0 väljalase

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äi 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).

Andmete vahemällu salvestamise süsteemi Dragonfly 1.0 väljalase

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.

Mõned Dragonfly funktsioonid:

  • Vahemälurežiim, mis asendab vanad andmed automaatselt uute andmetega pärast vaba mälu ammendumist.
  • Andmetega sidumise tugi kogu eluea jooksul, mille jooksul andmeid peetakse asjakohaseks.
  • Salvestusoleku taustal kettale viimise tugi hilisemaks taastamiseks pärast taaskäivitamist.
  • HTTP-konsooli olemasolu (seondub TCP-pordiga 6379) süsteemi haldamiseks ja API olemasolu mõõdikute tagastamiseks, mis ühildub Prometheusega.
  • Toetus 185 Redise käsule, mis on ligikaudu samaväärne Redis 5 väljalaske funktsioonidega.
  • Toetab kõiki vahemällu salvestatud käske, välja arvatud CAS (check-and-set).
  • Asünkroonsete toimingute tugi hetktõmmiste loomiseks.
  • Prognoositav mälukulu.
  • Sisseehitatud Lua 5.4 tõlk.
  • Toetab keerulisi andmetüüpe, nagu räsid, komplektid, loendid (ZSET, HSET, LIST, SETS ja STRING) ja JSON-andmed.
  • Toetab tõrketaluvuse ja koormuse tasakaalustamise salvestusruumi replikatsiooni.

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 15. märtsil 2028. Kuni selle ajani lubab litsents koodi kasutada ainult oma teenuste ja toodete toimimise tagamiseks, kuid keelab kasutamise tasuliste pilveteenuste loomiseks, mis toimivad Dragonfly lisandmoodulina.

Versioon Dragonfly 1.0 on tähelepanuväärne selle poolest, et toetab andmete replikatsiooni esmasest serverist teisese serverisse. Siiski saab Dragonflyt konfigureerida kasutama sekundaarse salvestusseadmena, mis võtab vastu andmeid esmasest serverist kas Dragonfly või Redise baasil. Replikatsioonihalduse API ühildub Redisega ja põhineb käskude ROLE ja REPLICAOF (SLAVEOF) kasutamisel.

Allikas: opennet.ru

Lisa kommentaar