Dragonfly 1.0 kaleratzea, memoriako datuen cache-sistema bat

Dragonfly memoriako caching eta biltegiratze sistema kaleratu da, datuak gako/balio formatuan manipulatzen dituena eta oso kargatutako guneen lana bizkortzeko soluzio arin gisa erabil daiteke, DBMSra kontsulta motelak gordetzeko eta RAM-en bitarteko datuak. Dragonfly-k Memcached eta Redis protokoloak onartzen ditu, eta horrek lehendik dauden bezero liburutegiak erabiltzeko eta Memcached eta Redis erabiliz proiektuak transferitzeko aukera ematen du Dragonfly-ra kodea berriro landu gabe.

Redis-ekin alderatuta, Dragonfly-k errendimendua 2 aldiz handitu du (6 milioi eskaera segundoko) Amazon EC16 c25gn.3.8xlarge inguruneko lan-karga tipikoetarako. AWS c6gn.16xlarge inguruneko Memcached-ekin alderatuta, Dragonfly-k 4.7 aldiz idazketa-eskaera gehiago egin ahal izan ditu segundoko (3.8 milioi 806 mila aldean) eta 1.77 aldiz irakurketa-eskaera gehiago segundoko (3.7 milioi versus 2.1 milioi).

Dragonfly 1.0 kaleratzea, memoriako datuen cache-sistema bat

5 GB datuak gordetzeko probetan, Dragonfly-k Redis-ek baino % 30 memoria gutxiago behar zuen. "bgsave" komandoarekin argazkiak sortzean, memoria-kontsumoa handitzen da, baina momentu gorenetan Redis-en baino ia hiru aldiz gutxiago geratzen da, eta argazkiak grabatzeko eragiketa bera askoz azkarragoa da (proban, Dragonfly-n argazki bat idatzi zen 30. urtean. segundotan, Redis, berriz, 42 segundotan).

Dragonfly 1.0 kaleratzea, memoriako datuen cache-sistema bat

Errendimendu altua hari anitzeko arkitektura bati esker lortzen da baliabideak partekatu gabe (partekatua-ezer ez), hau da, hari bakoitzari prozesadore bereizi bat esleitzen zaio bere datu-zatiarekin, mutex eta bira-blokeorik gabe lan eginez. Tekla anitzekin lan egitean atomotasuna ziurtatzeko, VLL sarraila arinak erabiltzen dira. Memorian informazioa modu eraginkorrean gordetzeko, marratxoen egitura erabiltzen da, zatitutako hash taula mota bat ezartzen duena.

Dragonfly-ren ezaugarri batzuk:

  • Cache-modua, doako memoria agortu ondoren datu zaharrak datu berriak automatikoki ordezkatzen dituena.
  • Datuak garrantzitsutzat jotzen diren bizitza osoan zehar lotzeko laguntza.
  • Biltegiratze-egoera atzeko planoan diskora garbitzeko laguntza, berrabiarazi ondoren gero berreskuratzeko.
  • HTTP kontsola baten presentzia (TCP 6379 atakarekin lotzen da) sistema kudeatzeko eta neurketak itzultzeko API bat, Prometheus-ekin bateragarria.
  • 185 Redis komandoetarako laguntza, gutxi gorabehera Redis 5 bertsioaren funtzionalitatearen baliokidea.
  • Memcached komando guztiak onartzen ditu CAS izan ezik (egiaztatu eta ezarri).
  • Argazkiak sortzeko eragiketa asinkronoetarako laguntza.
  • Aurreikus daitekeen memoria-kontsumoa.
  • Lua 5.4 interprete integratua.
  • Datu mota konplexuak onartzen ditu, hala nola hashak, multzoak, zerrendak (ZSET, HSET, LIST, SETS eta STRING) eta JSON datuak.
  • Biltegiratze-erreplikazioa onartzen du akatsen tolerantziarako eta karga orekatzeko.

Dragonfly kodea C/C++-n idatzita dago eta BSL (Business Source License) pean banatzen da. BSL lizentzia MySQL-ren sortzailekideek proposatu zuten Open Core ereduaren alternatiba gisa. BSL-ren funtsa da funtzionalitate aurreratuen kodea hasieran aldatzeko erabilgarri dagoela, baina denbora batez doan erabil daiteke baldintza gehigarriak betetzen badira, eta horiek saihesteko lizentzia komertziala erostea eskatzen dute. Dragonfly proiekturako lizentzia-baldintza gehigarriek kodea Apache 2.0 lizentziara transferitzea eskatzen dute 15ko martxoaren 2028ean. Orain arte, lizentziak kodea erabiltzea ahalbidetzen du bere zerbitzu eta produktuen funtzionamendua bermatzeko soilik, baina Dragonfly-ren gehigarri gisa funtzionatzen duten ordaindutako hodeiko zerbitzuak sortzeko erabiltzea debekatzen du.

Dragonfly 1.0 bertsioa aipagarria da zerbitzari nagusitik bigarren mailako datuen erreplikaziorako laguntza ezartzeagatik. Aldi berean, Dragonfly bigarren mailako biltegiratze gisa erabiltzeko konfigura daiteke, Dragonfly edo Redis-en oinarritutako zerbitzari nagusi batetik datuak jasoz. Erreplikazioa kudeatzeko APIa Redis-ekin bateragarria da eta ROLE eta REPLICAOF (SLAVEOF) komandoen erabileran oinarritzen da.

Iturria: opennet.ru

Gehitu iruzkin berria