Dragonfly-projekti kehittää nopeamman korvaavan Rediksen ja Memcachedin

Muistissa olevan Dragonfly-välimuistijärjestelmän ensimmäinen versio on saatavilla, ja se tukee Memcached- ja Redis-protokollia, mutta mahdollistaa kyselyjen suorittamisen paljon tehokkaammalla ja vähemmän muistinkulutuksella. Järjestelmä käsittelee tietoja avain/arvo-muodossa, ja sitä voidaan käyttää kevyenä ratkaisuna nopeuttamaan paljon kuormitettuja sivustoja, tallentamalla välimuistiin hitaat kyselyt DBMS:ään ja välitietoja RAM-muistissa. Dragonfly-koodi on kirjoitettu C/C++-kielellä ja sitä jaetaan BSL-lisenssillä (Business Source License).

MySQL:n perustajat ehdottivat BSL-lisenssiä vaihtoehtona Open Core -mallille. BSL:n ydin on, että edistyneiden toimintojen koodi on alun perin muokattavissa, mutta sitä voidaan käyttää jonkin aikaa maksutta vain, jos lisäehdot täyttyvät, joiden kiertäminen edellyttää kaupallisen lisenssin ostamista. Dragonfly-projektin lisälisenssiehdot edellyttävät, että koodi siirretään Apache 2.0 -lisenssiin vasta 1. Tähän asti lisenssi sallii koodin käytön vain sen palveluiden ja tuotteiden toiminnan varmistamiseksi, mutta kieltää käytön Dragonflyn lisäosana toimivien maksullisten pilvipalvelujen luomiseen.

Kehittäjien ja osoitettujen testien mukaan Dragonfly väittää olevansa nopein muistin tallennusjärjestelmä. Verrattuna Redikseen, Dragonfly saavutti 25-kertaisen suorituskyvyn ja kolminkertaisen vähennyksen muistinkulutuksessa tyypillisissä työkuormissa. Yksi Dragonfly-palvelin pystyy käsittelemään miljoonia pyyntöjä sekunnissa, esimerkiksi Amazon EC2 c6gn.16xlarge -ympäristössä oli mahdollista saavuttaa 3.8 miljoonan pyynnön suorituskyky sekunnissa.

Dragonfly-projekti kehittää nopeamman korvaavan Rediksen ja Memcachedin

5 Gt:n tiedon tallennustesteissä Dragonfly vaati 30 % vähemmän muistia kuin Redis. Kun luodaan tilannekuvia ”bgsave”-komennolla, muistin kulutus kasvaa, mutta huippuhetkillä se jää lähes kolme kertaa pienemmäksi kuin Rediksessä, ja itse tilannekuvan tallennustoiminto on paljon nopeampi (testissä tilannekuva Dragonflyssa kirjoitettiin 30. sekunnissa, kun taas Redis - 42 sekunnissa).

Dragonfly-projekti kehittää nopeamman korvaavan Rediksen ja Memcachedin

Korkea suorituskyky saavutetaan monisäikeisen arkkitehtuurin ansiosta ilman resurssien jakamista (shared-nothing), mikä tarkoittaa, että jokaiselle säikeelle on määritetty erillinen prosessori, jolla on oma osa dataa, joka toimii ilman mutexeja ja spin-lukkeja. Kevyitä VLL-lukkoja käytetään useiden avainten kanssa työskentelyn atomiteetin varmistamiseksi. Tietojen tehokkaaseen tallentamiseen muistiin käytetään dashtable-rakennetta, joka toteuttaa eräänlaisen osioidun hash-taulukon.

Ensimmäisen julkaisun ominaisuuksista mainitaan RESP2-protokollan tuki ja 130 Redis-komentoa, mikä vastaa suunnilleen Redis 2.8 -julkaisun toimintoja. Lisäksi Dragonfly tukee kaikkia välimuistiin tallennettuja komentoja paitsi CAS (check-and-set), tukee asynkronisia toimintoja tilannekuvien luomiseen, tarjoaa ennakoitavan muistin kulutuksen, tarjoaa sisäänrakennetun Lua 5.4 -tulkin ja tukee monimutkaisia ​​tietotyyppejä, kuten hajautustiedostoja, joukot ja luettelot (ZSET, HSET, LIST, SETS ja STRING).

Erikseen on saatavana välimuistitila, joka korvaa automaattisesti vanhat tiedot uusilla, kun vapaa muisti on lopussa. Tietoihin on mahdollista liittää elinikä, jonka aikana dataa pidetään merkityksellisenä. Tallennustila voidaan tyhjentää levylle taustalla myöhempää palautusta varten uudelleenkäynnistyksen jälkeen. Järjestelmän hallintaa varten tarjotaan HTTP-konsoli (sitoutuu TCP-porttiin 6379) ja Prometheuksen kanssa yhteensopiva API mittaustietojen palauttamista varten. Tulevissa versioissa aiomme laajentaa Redis-komentojen tukea ja ottaa käyttöön mahdollisuuden replikoida tallennustilaa vikasietoisuuden ja kuormituksen tasapainottamiseksi.

Lähde: opennet.ru

Lisää kommentti