Liberigo de Dragonfly 1.0, en-memora datuma kaŝmemorsistemo

La sistemo de konservado kaj konservado en memoro de Dragonfly estis liberigita, kiu manipulas datumojn en ŝlosila/valora formato kaj povas esti uzata kiel malpeza solvo por akceli la laboron de tre ŝarĝitaj ejoj, kaŝmemorigante malrapidajn demandojn al la DBMS kaj mezaj datumoj en RAM. Dragonfly subtenas la protokolojn Memcached kaj Redis, kiuj ebligas al vi uzi ekzistantajn klientajn bibliotekojn kaj translokigi projektojn uzante Memcached kaj Redis al Dragonfly sen reverki la kodon.

Kompare kun Redis, Dragonfly atingis 2-oblan pliiĝon en rendimento (6 milionoj da petoj sekundo) por tipaj laborŝarĝoj en la Amazon EC16 c25gn.3.8xlarge medio. Kompare kun Memcached en la medio AWS c6gn.16xlarge, Dragonfly povis plenumi 4.7 fojojn pli da skribpetoj je sekundo (3.8 milionoj kontraŭ 806 mil) kaj 1.77 fojojn pli da legpetoj sekundo (3.7 milionoj kontraŭ 2.1 milionoj).

Liberigo de Dragonfly 1.0, en-memora datuma kaŝmemorsistemo

En testoj por stoki 5 GB da datumoj, Dragonfly postulis 30% malpli da memoro ol Redis. Dum kreado de momentfotoj per la komando "bgsave", memorkonsumo pliiĝas, sed en pintaj momentoj ĝi restis preskaŭ trioble malpli ol en Redis, kaj la registra operacio mem estas multe pli rapida (en la testo, momentfoto en Dragonfly estis skribita en 30). sekundoj, dum Redis - en 42 sekundoj).

Liberigo de Dragonfly 1.0, en-memora datuma kaŝmemorsistemo

Alta rendimento estas atingita danke al plurfadena arkitekturo sen kunhavigo de rimedoj (shared-nothing), kio signifas, ke al ĉiu fadeno estas asignita aparta aparta procesoro kun sia propra parto de datumoj, laborante sen muteksoj kaj spinaj seruroj. Por certigi atomecon laborante kun pluraj ŝlosiloj, malpezaj VLL-seruroj estas uzataj. Por efike stoki informojn en memoro, la strekema strukturo estas uzata, kiu efektivigas specon de dividita hashtabelo.

Kelkaj trajtoj de Dragonfly:

  • Caching-reĝimo, kiu aŭtomate anstataŭigas malnovajn datumojn per novaj datumoj post kiam la libera memoro estas elĉerpita.
  • Subteno por ligado al datumoj dumviva dum kiu la datumoj estas konsiderataj gravaj.
  • Subteno por flui konservadon al disko en la fono por posta reakiro post rekomenco.
  • La ĉeesto de HTTP-konzolo (ligas al TCP-haveno 6379) por sistemadministrado kaj API por resendado de metrikoj, kongrua kun Prometheus.
  • Subteno por 185 Redis-komandoj, kio estas proksimume ekvivalenta al la funkcieco de la Redis 5-eldono.
  • Subtenas ĉiujn Memcached-komandojn krom CAS (kontrolu kaj agordi).
  • Subteno por nesinkronaj operacioj por krei momentfotojn.
  • Antaŭvidebla memorkonsumo.
  • Enkonstruita Lua 5.4 interpretisto.
  • Subtenas kompleksajn datumtipojn kiel haŝojn, arojn, listojn (ZSET, HSET, LIST, SETS kaj STRING) kaj JSON-datumojn.
  • Subtenas stokan reproduktadon por misfunkciado kaj ekvilibro de ŝarĝo.

La Dragonfly-kodo estas skribita en C/C++ kaj estas distribuita sub la BSL (Komerca Fonta Licenco). La BSL-licenco estis proponita fare de la kunfondintoj de MySQL kiel alternativo al la Open Core-modelo. La esenco de BSL estas, ke la kodo de altnivela funkcieco estas komence disponebla por modifo, sed dum iom da tempo povas esti uzata senpage nur se pliaj kondiĉoj estas plenumitaj, kiuj postulas la aĉeton de komerca permesilo por eviti. Pliaj licencaj kondiĉoj por la projekto Dragonfly postulas, ke la kodo estu transdonita al la licenco Apache 2.0 la 15-an de marto 2028. Ĝis ĉi tiu tempo, la permesilo permesas la uzon de la kodo nur por certigi la funkciadon de ĝiaj servoj kaj produktoj, sed malpermesas uzi por la kreado de pagitaj nubaj servoj, kiuj funkcias kiel aldonaĵo al Dragonfly.

Versio Dragonfly 1.0 estas rimarkinda pro sia efektivigo de subteno por datenreproduktado de la primara servilo ĝis la sekundara. Tamen, Dragonfly povas esti agordita por esti utiligita kiel sekundara stokado kiu ricevas datenojn de primara servilo aŭ surbaze de Dragonfly aŭ bazita sur Redis. La API-administrado de reproduktado estas kongrua kun Redis kaj baziĝas sur la uzo de la komandoj ROLE kaj REPLICAOF (SLAVEOF).

fonto: opennet.ru

Aldoni komenton