Iphrojekthi ye-Dragonfly ithuthukisa ukumiselela okusheshayo kwe-Redis ne-Memcached

Ukukhishwa kokuqala kwesistimu yokulondoloza inkumbulo ye-Dragonfly kuyatholakala, okuhlinzeka ngosekelo lwezivumelwano ze-Memcached ne-Redis, kodwa okuvumela imibuzo ukuthi isetshenziswe ngokusebenza okuphezulu kakhulu kanye nokusetshenziswa kwenkumbulo okuncane. Uhlelo lukhohlisa idatha ngefomethi yokhiye/inani futhi lungasetshenziswa njengesixazululo esilula ukusheshisa umsebenzi wamasayithi anomthwalo omkhulu, ukufaka kungobo yomlando imibuzo ehamba kancane ku-DBMS kanye nedatha emaphakathi ku-RAM. Ikhodi Dragonfly ibhalwe nge-C/C++ futhi isatshalaliswa ngaphansi kwe-BSL (Ilayisensi Yomthombo Webhizinisi).

Ilayisense ye-BSL yaphakanyiswa abasunguli be-MySQL njengenye indlela yemodeli ye-Open Core. Ingqikithi ye-BSL iwukuthi ikhodi yokusebenza okuthuthukisiwe iyatholakala ekuqaleni ukuze ilungiswe, kodwa isikhathi esithile ingasetshenziswa mahhala kuphela uma izimo ezengeziwe zihlangatshezwana nazo, ezidinga ukuthengwa kwelayisensi yokuhweba ukuze kweqe. Imigomo yelayisensi eyengeziwe yephrojekthi ye-Dragonfly idinga ukuthi ikhodi idluliselwe kulayisensi ye-Apache 2.0 kuphela ngoJuni 1, 2027. Kuze kube yilesi sikhathi, ilayisensi ivumela ukusetshenziswa kwekhodi kuphela ukuze kuqinisekiswe ukusebenza kwamasevisi nemikhiqizo yayo, kodwa ivimbela ukusetshenziselwa ukwakhiwa kwezinsizakalo zamafu ezikhokhelwayo ezisebenza njengesengezo ku-Dragonfly.

Ngokusho konjiniyela kanye nokuhlolwa okubonisiwe, i-Dragonfly ithi iwuhlelo lokugcina inkumbulo olushesha kakhulu. Uma kuqhathaniswa ne-Redis, Ujekamanzi uthole ukwanda kokusebenza okuphindwe izikhathi ezingu-25 kanye nokuncipha okuphindwe kathathu kokusetshenziswa kwenkumbulo ngomthwalo ojwayelekile womsebenzi. Iseva eyodwa ye-Dragonfly ingakwazi ukucubungula izigidi zezicelo ngomzuzwana, isibonelo, endaweni ye-Amazon EC2 c6gn.16xlarge kwakungenzeka ukufeza ukusebenza kwezicelo eziyizigidi ezingu-3.8 ngomzuzwana.

Iphrojekthi ye-Dragonfly ithuthukisa ukumiselela okusheshayo kwe-Redis ne-Memcached

Ekuhlolweni kokugcina idatha engu-5 GB, Ujekamanzi udinga inkumbulo engaphansi ngo-30% kune-Redis. Lapho udala izifinyezo ngomyalo we- "bgsave", ukusetshenziswa kwenkumbulo kuyanda, kepha ngezikhathi eziphakeme kuhlala kungaphansi ngokuphindwe kathathu kune-Redis, futhi umsebenzi wokuqopha isifinyezo ngokwawo ushesha kakhulu (esivivinyweni, isifinyezo ku-Dragonfly sabhalwa ku-30 imizuzwana, kuyilapho Redis - ngemizuzwana 42).

Iphrojekthi ye-Dragonfly ithuthukisa ukumiselela okusheshayo kwe-Redis ne-Memcached

Ukusebenza okuphezulu kufinyelelwa ngenxa yesakhiwo esinemicu eminingi ngaphandle kokwabelana ngezinsiza (okwabelwana-lutho), okusho ukuthi intambo ngayinye inikezwe iphrosesa ehlukile ehlukene nengxenye yayo yedatha, esebenza ngaphandle kwe-mutexes nama-spin locks. Ukuqinisekisa i-athomu lapho usebenza ngokhiye abaningi, izingidi ze-VLL ezingasindi ziyasetshenziswa. Ukugcina kahle ulwazi enkumbulweni, kusetshenziswa ukwakheka kwedeshibhodi, okusebenzisa uhlobo lwethebula le-hashi elihlukanisiwe.

Phakathi kwezici ezitholakala ekukhishweni kokuqala, ukusekelwa kwephrothokholi ye-RESP2 kanye nemiyalo ye-130 Redis kuyaphawulwa, cishe okuhambisana nokusebenza kokukhishwa kwe-Redis 2.8. Ngaphezu kwalokho, Ujekamanzi usekela yonke imiyalo egcinwe yi-memcached ngaphandle kwe-CAS (hlola bese usetha), inikeza ukusekelwa kokusebenza okuvumelanayo kokudala izifinyezo, inikeza ukusetshenziswa kwememori okubikezelwe, inikeza umhumushi we-Lua 5.4 owakhelwe ngaphakathi, futhi isekela izinhlobo zedatha eziyinkimbinkimbi njengama-hashes, amasethi, nohlu (ZSET, HSET, LIST, SETS kanye ne-STRING).

Imodi yokulondoloza isikhashana itholakala ngokuhlukene, eshintsha ngokuzenzakalelayo idatha endala ngedatha entsha ngemva kokuphelelwa inkumbulo yamahhala. Kungenzeka ukunamathisela impilo yonke kudatha lapho idatha ibhekwa njengebalulekile. Isimo sesitoreji singagudluzwa kudiski ngemuva ukuze silulame ngemva kokuqala kabusha. Ukuze uphathe isistimu, ikhonsoli ye-HTTP inikezwa (ibophezela kumbobo ye-TCP 6379) kanye ne-API yokubuyisela ama-metrics, asebenzisana ne-Prometheus. Ezinguqulweni ezizayo, sihlela ukwandisa ukwesekwa kwemiyalo ye-Redis futhi sisebenzise ikhono lokuphindaphinda isitoreji ukuze sinikeze ukubekezelela amaphutha nokulinganisa ukulayisha.

Source: opennet.ru

Engeza amazwana