La Dragonfly-projekto evoluigas pli rapidan anstataŭaĵon por Redis kaj Memcached

La unua eldono de la Dragonfly en-memora kaŝmemorsistemo estas havebla, provizante subtenon por la Memcached kaj Redis protokoloj, sed permesante demandojn esti efektivigitaj kun multe pli alta efikeco kaj malpli memorkonsumo. La sistemo manipulas datumojn en ŝlosila/valora formato kaj povas esti uzata kiel malpeza solvo por akceli la laboron de altŝarĝaj retejoj, konservante malrapidajn demandojn al la DBMS kaj mezaj datumoj en RAM. 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 de la projekto Dragonfly postulas, ke la kodo estu transdonita al la licenco Apache 2.0 nur la 1-an de junio 2027. Ĝ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.

Laŭ la programistoj kaj pruvitaj testoj, Dragonfly asertas esti la plej rapida memorsistemo. Kompare kun Redis, Dragonfly atingis 25-oblan pliiĝon en rendimento kaj trioblan redukton de memorkonsumo por tipaj laborkvantoj. Unu Dragonfly-servilo povas procesi milionojn da petoj sekundo, ekzemple, en la Amazon EC2 c6gn.16xlarge medio eblis atingi rendimenton de 3.8 milionoj da petoj sekundo.

La Dragonfly-projekto evoluigas pli rapidan anstataŭaĵon por Redis kaj Memcached

En testoj por stoki 5 GB da datumoj, Dragonfly postulis 30% malpli da memoro ol Redis. Kreante momentfotojn per la komando "bgsave", memorkonsumo pliiĝas, sed en pintaj momentoj ĝi restas 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).

La Dragonfly-projekto evoluigas pli rapidan anstataŭaĵon por Redis kaj Memcached

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.

Inter la funkcioj disponeblaj en la unua eldono, oni rimarkas subtenon por la RESP2-protokolo kaj 130 Redis-komandoj, kiuj proksimume respondas al la funkcieco de la Redis 2.8-eldono. Krome, Dragonfly subtenas ĉiujn memcached-komandojn krom CAS (kontrolo kaj aro), provizas subtenon por nesinkronaj operacioj por kreado de momentfotoj, disponigas antaŭvideblan memorkonsumon, disponigas enkonstruitan Lua 5.4 interpretiston, kaj subtenas kompleksajn datumtipojn kiel ekzemple haŝiŝoj, aroj, kaj listoj (ZSET, HSET, LIST, SETS kaj STRING).

Kaŝmemoro estas aparte havebla, kiu aŭtomate anstataŭigas malnovajn datumojn per novaj datumoj post kiam la libera memoro estas elĉerpita. Eblas ligi vivdaŭron al la datumoj dum kiuj la datumoj estas konsiderataj rilataj. Stoka stato povas esti fluita al disko en la fono por posta reakiro post rekomenco. Por administri la sistemon, HTTP-konzolo estas provizita (ligas al TCP-haveno 6379) kaj API por resendado de metrikoj, kongruaj kun Prometheus. En estontaj versioj, ni planas vastigi subtenon por Redis-komandoj kaj efektivigi la kapablon reprodukti stokadon por provizi misfunkciadon kaj ŝarĝan ekvilibron.

fonto: opennet.ru

Aldoni komenton