Llançament de Dragonfly 1.0, un sistema per a la memòria cau de dades a la memòria RAM

S'ha llançat el sistema d'emmagatzematge i emmagatzematge en memòria cau de Dragonfly, que manipula dades en format clau/valor i es pot utilitzar com a solució lleugera per accelerar el treball de llocs molt carregats, guardant a la memòria cau consultes lentes al DBMS i dades intermèdies a la memòria RAM. Dragonfly admet els protocols Memcached i Redis, que us permeten utilitzar biblioteques de clients existents i transferir projectes mitjançant Memcached i Redis a Dragonfly sense reelaborar el codi.

En comparació amb Redis, Dragonfly va aconseguir un augment de 2 vegades en el rendiment (6 milions de sol·licituds per segon) per a les càrregues de treball típiques a l'entorn Amazon EC16 c25gn.3.8xlarge. En comparació amb Memcached a l'entorn AWS c6gn.16xlarge, Dragonfly va poder realitzar 4.7 vegades més sol·licituds d'escriptura per segon (3.8 milions enfront de 806 mil) i 1.77 vegades més sol·licituds de lectura per segon (3.7 milions enfront de 2.1 milions).

Llançament de Dragonfly 1.0, un sistema per a la memòria cau de dades a la memòria RAM

En les proves per emmagatzemar 5 GB de dades, Dragonfly va requerir un 30% menys de memòria que Redis. Quan es creen instantànies amb l'ordre "bgsave", el consum de memòria augmenta, però en els moments punta es va mantenir gairebé tres vegades menys que a Redis, i l'operació d'enregistrament de la instantània en si és molt més ràpida (a la prova, es va escriure una instantània a Dragonfly l'any 30). segons, mentre que Redis - en 42 segons).

Llançament de Dragonfly 1.0, un sistema per a la memòria cau de dades a la memòria RAM

L'alt rendiment s'aconsegueix gràcies a una arquitectura de múltiples fils sense compartir recursos (shared-nothing), el que significa que a cada fil se li assigna un processador independent amb la seva pròpia porció de dades, que funciona sense mutex ni bloquejos de rotació. Per garantir l'atomicitat quan es treballa amb diverses claus, s'utilitzen panys VLL lleugers. Per emmagatzemar informació de manera eficient a la memòria, s'utilitza l'estructura de taulers, que implementa un tipus de taula hash particionada.

Algunes característiques de Dragonfly:

  • Mode d'emmagatzematge en memòria cau, que substitueix automàticament les dades antigues per dades noves després d'esgotar la memòria lliure.
  • Suport per a la vinculació de dades durant tota la vida durant la qual les dades es consideren rellevants.
  • Suport per netejar l'estat d'emmagatzematge al disc en segon pla per a una recuperació posterior després del reinici.
  • La presència d'una consola HTTP (enllaç amb el port TCP 6379) per a la gestió del sistema i una API per retornar mètriques, compatible amb Prometheus.
  • Suport per a 185 ordres Redis, que és aproximadament equivalent a la funcionalitat de la versió Redis 5.
  • Admet totes les ordres de Memcached excepte CAS (comprova i configura).
  • Suport per a operacions asíncrones per crear instantànies.
  • Consum previsible de memòria.
  • Intèrpret Lua 5.4 integrat.
  • Admet tipus de dades complexos com ara hash, conjunts, llistes (ZSET, HSET, LIST, SETS i STRING) i dades JSON.
  • Admet la replicació d'emmagatzematge per a la tolerància a errors i l'equilibri de càrrega.

El codi Dragonfly està escrit en C/C++ i es distribueix sota la BSL (Business Source License). La llicència BSL va ser proposada pels cofundadors de MySQL com una alternativa al model Open Core. L'essència de BSL és que el codi de funcionalitat avançada està inicialment disponible per a la modificació, però durant algun temps només es pot utilitzar gratuïtament si es compleixen condicions addicionals, que requereixen la compra d'una llicència comercial per evitar-la. Els termes de llicència addicionals per al projecte Dragonfly requereixen que el codi es transfereixi a la llicència Apache 2.0 el 15 de març de 2028. Fins a aquest moment, la llicència permet l'ús del codi només per garantir el funcionament dels seus serveis i productes, però prohibeix l'ús per a la creació de serveis de núvol de pagament que actuen com a complement a Dragonfly.

La versió Dragonfly 1.0 destaca per la seva implementació de suport per a la replicació de dades des del servidor principal al secundari. Tanmateix, Dragonfly es pot configurar per utilitzar-lo com a emmagatzematge secundari que rep dades d'un servidor principal basat en Dragonfly o basat en Redis. L'API de gestió de rèplica és compatible amb Redis i es basa en l'ús de les ordres ROLE i REPLICAOF (SLAVEOF).

Font: opennet.ru

Afegeix comentari